[leave world arguments in sc map, only delete them after creating partial applications
John Meacham <john@repetae.net>**20070509073513] hunk ./Grin/FromE.hs 198
-    let newTyEnv = TyEnv $ Map.fromList (concatMap makePartials (Map.toList endTyEnv) ++ [(funcMain, toTyTy ([],tyUnit))] ++ [(en, toTyTy ([],tyUnit)) | en <- enames])
+    let newTyEnv = TyEnv $ Map.fromList (Map.toList endTyEnv ++ [(funcMain, toTyTy ([],tyUnit))] ++ [(en, toTyTy ([],tyUnit)) | en <- enames])
hunk ./Grin/FromE.hs 219
-    initTyEnv = mappend primTyEnv $ TyEnv $ Map.fromList $ [ (a,toTyTy (b,c)) | (_,(a,b,c)) <-  Map.toList scMap] ++ concat [con x| x <- Map.elems $ constructorMap dataTable, conType x /= eHash]
+    initTyEnv = mappend primTyEnv $ TyEnv $ Map.fromList $ concat [ makePartials (a,b,c) | (_,(a,b,c)) <-  Map.toList scMap] ++ concat [con x| x <- Map.elems $ constructorMap dataTable, conType x /= eHash]
hunk ./Grin/FromE.hs 221
-    con c | keepCon = return $ (n,TyTy { tySlots = filter keepIt as, tyReturn = TyNode, tySiblings = fmap (map convertName) sibs}) where
+    con c | keepCon = return $ (n,TyTy { tySlots = keepIts as, tyReturn = TyNode, tySiblings = fmap (map convertName) sibs}) where
hunk ./Grin/FromE.hs 252
-makePartials (fn,TyTy { tySlots = ts, tyReturn = rt }) | tagIsFunction fn, head (show fn) /= '@' = ans where
-    ans = (fn,toTyTy (ts,rt)):[(partialTag fn i,toTyTy (reverse $ drop i $ reverse ts ,TyNode)) |  i <- [0.. end] ]
-    end | 'b':_ <- show fn = 0
-        | otherwise = length ts
-makePartials x = [x]
+makePartials (fn,ts,rt) | 'f':_ <- show fn = ans where
+    ans = (fn,toTyTy (keepIts ts,rt)):[(partialTag fn i,toTyTy (keepIts $ reverse $ drop i $ reverse ts ,TyNode)) |  i <- [0.. length ts] ]
+makePartials x = error "makePartials"
hunk ./Grin/FromE.hs 343
-        return (nn,(Tup (filter keepIt $ map toVal as) :-> x))
+        return (nn,(Tup (keepIts $ map toVal as) :-> x))
hunk ./Grin/FromE.hs 365
-                    app fty (App v (filter keepIt x) rt) y
+                    app fty (App v (keepIts x) rt) y
hunk ./Grin/FromE.hs 370
-                        app fty (App v (filter keepIt x) es) y
+                        app fty (App v (keepIts x) es) y
hunk ./Grin/FromE.hs 373
-                        return $ Return (NodeC pt (filter keepIt as))
+                        return $ Return (NodeC pt (keepIts as))
hunk ./Grin/FromE.hs 447
-            return $ Prim p (filter keepIt $ args $ tail xs)
+            return $ Prim p (keepIts $ args $ tail xs)
hunk ./Grin/FromE.hs 450
-            return $ Prim p (filter keepIt $ args xs)
+            return $ Prim p (keepIts $ args xs)
hunk ./Grin/FromE.hs 479
-        return $ e :>>= tuple (filter keepIt $ map toVal xs) :-> wh
+        return $ e :>>= tuple (keepIts $ map toVal xs) :-> wh
hunk ./Grin/FromE.hs 521
-        return (NodeC nn (filter keepIt $ map toVal es) :-> x)
+        return (NodeC nn (keepIts $ map toVal es) :-> x)
hunk ./Grin/FromE.hs 565
-            s = Store (NodeC t (filter keepIt $ e:as))
+            s = Store (NodeC t (keepIts $ e:as))
hunk ./Grin/FromE.hs 567
-        liftIO $ addNewFunction cenv (tl,Tup (filter keepIt targs) :-> d)
+        liftIO $ addNewFunction cenv (tl,Tup (keepIts targs) :-> d)
hunk ./Grin/FromE.hs 571
-        let addt (TyEnv mp) =  TyEnv $ Map.insert n (toTyTy (map getType args,getType body)) mp
+        let addt (TyEnv mp) =  TyEnv $ Map.insert (partialTag n 0) (toTyTy (args',TyNode))  (Map.insert n (toTyTy (args',getType body)) mp)
+            args' = map getType args
hunk ./Grin/FromE.hs 598
-                    let s = Store (NodeC (partialTag v 0) (filter keepIt x))
+                    let s = Store (NodeC (partialTag v 0) (keepIts x))
hunk ./Grin/FromE.hs 608
-                    as <- return $ filter keepIt as
+                    as <- return $ keepIts as
hunk ./Grin/FromE.hs 613
-                    return $ Store (NodeC (tagFlipFunction v) (filter keepIt as))
+                    return $ Store (NodeC (tagFlipFunction v) (keepIts as))
hunk ./Grin/FromE.hs 638
-                    return $ [createFuncDef True nn (Tup (filter keepIt $ map toVal as) :-> x)]
+                    return $ [createFuncDef True nn (Tup (keepIts $ map toVal as) :-> x)]
hunk ./Grin/FromE.hs 687
-    constant (ELit lc@LitCons { litName = n, litArgs = es }) | Just es <- mapM constant es, Just nn <- getName lc = (return $ Const (NodeC nn (filter keepIt es)))
+    constant (ELit lc@LitCons { litName = n, litArgs = es }) | Just es <- mapM constant es, Just nn <- getName lc = (return $ Const (NodeC nn (keepIts es)))
hunk ./Main.hs 795
-    h <- openFile (fn ++ "_final.grin") WriteMode
-    (argstring,sversion) <- getArgString
-    hPutStrLn h $ unlines [ "-- " ++ argstring,"-- " ++ sversion,""]
-    hPrintGrin h grin
-    hClose h
+    dumpGrin (optOutName options) "final" grin