> It would be useful to specify a function as so: > doSomethingToAModule :: SCode(SModule) -> SomeRandomOtherType You may want to check out the work done on refinement types, mostly by Frank Pfenning and some of his students IIRC. Stefan