| I was wondering whether there would be any concerns against redefining the | above type synonyms into newtypes? Either each one of the above gets its own | newtype wrapper or new phase-describing wrappers: | | newtype PostTc a = PostTc a deriving (Eq, Ord, Show, Functor) | newtype PostRn a = PostRn a deriving (Eq, Ord, Show, Functor) | | type PostTcType = PostTc Type | type PostTcExpr = PostTc (HsExpr Id) | type SyntaxExpr id = PostRn (HsExpr id) | -- etc. | | The default instances would ignore any Post* types, but they could easily be | added via custom `ext1T` and friends.
That'd be fine. Go ahead. | These have always distressed me. Would it be feasible to refactor so | that this isn't necessary, e.g. | | typecheck :: HsSyn Name () -> HsSyn Name PostTcInfo I don't particularly like it either, but it's never caused problems. Adding several more type parameters to all the HsSyn types just feels like a rather heavyweight solution to something that isn't really biting us. Also I don't want to do that right now, because I'm upheaving the type checker, so I don't want major changes. (Adding the newtypes is fine though.) Simon _______________________________________________ Cvs-ghc mailing list Cvs-ghc@haskell.org http://www.haskell.org/mailman/listinfo/cvs-ghc