[remove newtypes from type signatures when possible
John Meacham <john@repetae.net>**20061010061035] hunk ./E/Diff.hs 9
+import E.FreeVars()
hunk ./E/Traverse.hs 18
-import DataConstructors()
hunk ./E/TypeCheck.hs 6
+    removeNewtypes,
hunk ./E/TypeCheck.hs 10
-    typeInfer',
-    typeInfer
+    typeInfer,
+    typeInfer'
hunk ./E/TypeCheck.hs 14
-import Monad(when,liftM)
-import Control.Monad.Writer
+import Control.Monad.Identity
hunk ./E/TypeCheck.hs 16
+import Control.Monad.Writer
+import Monad(when,liftM)
hunk ./E/TypeCheck.hs 20
-import Support.CanType
-import {-# SOURCE #-} DataConstructors
hunk ./E/TypeCheck.hs 27
+import E.Traverse
hunk ./E/TypeCheck.hs 29
+import Name.Id
+import Support.CanType
hunk ./E/TypeCheck.hs 32
-import qualified Util.Seq as Seq
hunk ./E/TypeCheck.hs 33
-import Name.Id
+import qualified Util.Seq as Seq
+import {-# SOURCE #-} DataConstructors
hunk ./E/TypeCheck.hs 136
+
+removeNewtypes :: DataTable -> E -> E
+removeNewtypes dataTable e = runIdentity (f e) where
+    f e = emapEGH f f' return e
+    f' el@ELit {} = emapEGH f' return return (followAliases dataTable el)
+    f' t = emapEGH f' return return t
+
hunk ./Main.hs 291
+    let ELetRec ds _ = removeNewtypes fullDataTable (programE prog)
+    prog <- return $ programSetDs ds prog
hunk ./Main.hs 614
+
hunk ./Main.hs 634
+
+    let ELetRec ds _ = removeNewtypes dataTable (programE prog)
+    prog <- return $ programSetDs ds prog
+