[make Grin contain FuncDef's rather than just raw functions
John Meacham <john@repetae.net>**20060815101126] hunk ./C/FromGrin.hs 429
-    tags = (tagHole,[]):sortUnder (show . fst) [ (t,runIdentity $ findArgs (grinTypeEnv grin) t) | t <- Set.toList $ freeVars (snds $ grinFunctions grin) `mappend` freeVars (snds $ grinCafs grin), tagIsTag t]
+    tags = (tagHole,[]):sortUnder (show . fst) [ (t,runIdentity $ findArgs (grinTypeEnv grin) t) | t <- Set.toList $ freeVars (snds $ grinFuncs grin) `mappend` freeVars (snds $ grinCafs grin), tagIsTag t]
hunk ./C/FromGrin.hs 431
-        funcs <- flip mapM (grinFunctions grin) $ \(a,l) -> do
+        funcs <- flip mapM (grinFuncs grin) $ \(a,l) -> do
hunk ./Grin/DeadCode.hs 43
-    mapM_ (go fixer pappFuncs suspFuncs usedFuncs usedArgs usedCafs postInline) (grinFunctions grin)
+    mapM_ (go fixer pappFuncs suspFuncs usedFuncs usedArgs usedCafs postInline) (grinFuncs grin)
hunk ./Grin/DeadCode.hs 67
-    newFuncs <- flip mconcatMapM (grinFunctions grin) $ \ (x,y) -> do
+    newFuncs <- flip mconcatMapM (grinFuncs grin) $ \ (x,y) -> do
hunk ./Grin/DeadCode.hs 88
-    return grin {
+    return $ setGrinFunctions newFuncs grin {
hunk ./Grin/DeadCode.hs 90
-        grinFunctions = newFuncs,
hunk ./Grin/EvalInline.hs 132
-        ftags = freeVars (map (lamExp . snd) $ grinFunctions grin)
+        ftags = freeVars (map (lamExp . snd) $ grinFuncs grin)
hunk ./Grin/EvalInline.hs 153
-    funcs <- mapMsnd f (grinFunctions grin)
+    funcs <- mapMsnd f (grinFuncs grin)
hunk ./Grin/EvalInline.hs 160
-    return $ grin { grinTypeEnv = TyEnv (tyEnv `Map.union` appTyEnv), grinFunctions = apps ++ eval:funcs}
+    return $ setGrinFunctions (apps ++ eval:funcs) grin { grinTypeEnv = TyEnv (tyEnv `Map.union` appTyEnv) }
hunk ./Grin/FromE.hs 105
-    let errs = [  (err ++ "\n" ++ render (prettyFun a) ) | (a,Left err) <-  [ (a,typecheck (grinTypeEnv grin) c:: Either String Ty)   | a@(_,(_ :-> c)) <-  grinFunctions grin ]]
+    let errs = [  (err ++ "\n" ++ render (prettyFun a) ) | (a,Left err) <-  [ (a,typecheck (grinTypeEnv grin) c:: Either String Ty)   | a@(_,(_ :-> c)) <-  grinFuncs grin ]]
hunk ./Grin/FromE.hs 196
-
-    let grin = emptyGrin {
+    let grin = setGrinFunctions theFuncs emptyGrin {
hunk ./Grin/FromE.hs 200
-            grinFunctions = (funcMain ,(Tup [] :-> App funcInitCafs [] tyUnit :>>= unit :->  discardResult theMain)) : efv ++ ds',
hunk ./Grin/FromE.hs 202
+        theFuncs = (funcMain ,(Tup [] :-> App funcInitCafs [] tyUnit :>>= unit :->  discardResult theMain)) : efv ++ ds'
hunk ./Grin/Grin.hs 23
+    setGrinFunctions,
hunk ./Grin/Grin.hs 25
+    grinFuncs,
hunk ./Grin/Grin.hs 217
+grinFuncs grin = map (\x -> (funcDefName x, funcDefBody x)) (grinFunctions grin)
+setGrinFunctions xs grin = grin { grinFunctions = map (uncurry (createFuncDef False)) xs }
+
hunk ./Grin/Grin.hs 298
-    grinFunctions :: [(Atom,Lam)],
+    grinFunctions :: [FuncDef],
hunk ./Grin/Linear.hs 28
-grinLinear  grin@(Grin { grinTypeEnv = typeEnv, grinFunctions = grinFunctions, grinCafs = cafs }) = do
+grinLinear  grin@(Grin { grinTypeEnv = typeEnv, grinCafs = cafs }) = do
hunk ./Grin/Linear.hs 32
-    mapM_ (go argSupply varSupply) grinFunctions
+    mapM_ (go argSupply varSupply) (grinFuncs grin)
hunk ./Grin/Optimize.hs 72
-            f (e :>>= l :-> r) | Set.null (freeVars e `Set.intersect` def) = do
+            f (e :>>= l :-> r) | Set.null (freeVars e `Set.intersection` def) = do
hunk ./Grin/Optimize.hs 142
-    fs <- mapM f (grinFunctions grin)
-    return grin { grinFunctions = fs }
+    fs <- mapM f (grinFuncs grin)
+    return $ setGrinFunctions fs grin
hunk ./Grin/Optimize.hs 148
-    graph = newGraph [ (a,concatMap f (freeVars l)) | (a,_ :-> l) <- grinFunctions grin, isSpeculatable l, getType l == TyNode ] fst snd
+    graph = newGraph [ (a,concatMap f (freeVars l)) | (a,_ :-> l) <- grinFuncs grin, isSpeculatable l, getType l == TyNode ] fst snd
hunk ./Grin/PointsToAnalysis.hs 234
-analyze grin@(Grin { grinTypeEnv = typeEnv, grinFunctions = grinFunctions, grinCafs = cafs }) = do
+analyze grin@(Grin { grinTypeEnv = typeEnv, grinCafs = cafs }) = do
hunk ./Grin/PointsToAnalysis.hs 253
-        (neq,hc) = mapFst flattenPointsToEq $ foldl f  (eq,hc') grinFunctions
+        (neq,hc) = mapFst flattenPointsToEq $ foldl f  (eq,hc') (grinFuncs grin)
hunk ./Grin/PointsToAnalysis.hs 295
-grinInlineEvalApply  stats grin@(Grin { grinTypeEnv = typeEnv, grinFunctions = grinFunctions, grinCafs = cafs }) = do
+grinInlineEvalApply  stats grin@(Grin { grinTypeEnv = typeEnv,  grinCafs = cafs }) = do
hunk ./Grin/PointsToAnalysis.hs 398
-    let (sts,funcs) = unzip [ (stat,(a,l')) | (a,l) <- grinFunctions, let (l',stat) = runStatM (f l) ]
+    let (sts,funcs) = unzip [ (stat,(a,l')) | (a,l) <- grinFuncs grin, let (l',stat) = runStatM (f l) ]
hunk ./Grin/PointsToAnalysis.hs 400
-    return grin {
+    return $ setGrinFunctions funcs grin {
hunk ./Grin/PointsToAnalysis.hs 402
-        grinFunctions = funcs,
hunk ./Grin/PointsToAnalysis.hs 784
-        ptFuncArgs = [ makeEntry v i n ty | (n,~(Tup xs) :-> _) <- grinFunctions grin, (i,~(Var v ty)) <- zip naturals xs]
+        ptFuncArgs = [ makeEntry v i n ty | (n,~(Tup xs) :-> _) <- grinFuncs grin, (i,~(Var v ty)) <- zip naturals xs]
hunk ./Grin/Show.hs 155
-hPrintGrin handle Grin { grinFunctions = ds', grinCafs = cafs } = do
+hPrintGrin handle grin@Grin { grinCafs = cafs } = do
hunk ./Grin/Show.hs 160
-    mapM_ (hPutStrLn handle . render) $ map prettyFun ds'
+    mapM_ (hPutStrLn handle . render) $ map prettyFun (grinFuncs grin)
hunk ./Grin/Show.hs 192
-    nodes = zip [0..] (grinFunctions grin)
+    nodes = zip [0..] (grinFuncs grin)
hunk ./Grin/Simplify.hs 502
-        fs = grinFunctions grin
+        fs = grinFuncs grin
hunk ./Grin/Simplify.hs 550
-    return grin { grinFunctions = nf }
+    return $ setGrinFunctions nf grin
hunk ./Grin/Unboxing.hs 78
-    let tcgraph = newGraph [ (n, Set.toList $ tailcalls body) | (n,body) <- grinFunctions grin] fst snd
+    let tcgraph = newGraph [ (n, Set.toList $ tailcalls body) | (n,body) <- grinFuncs  grin] fst snd
hunk ./Grin/Unboxing.hs 81
-        cfns = filter ubc (fsts $ grinFunctions grin)
+        cfns = filter ubc (fsts $ grinFuncs grin)
hunk ./Grin/Unboxing.hs 98
-    let newgrin = grin {
+    let newgrin = setGrinFunctions (map doFunc (grinFuncs grin)) grin {
hunk ./Grin/Unboxing.hs 100
-        grinTypeEnv = mtenv (grinTypeEnv grin),
-        grinFunctions = map doFunc (grinFunctions grin)
+        grinTypeEnv = mtenv (grinTypeEnv grin)
hunk ./Grin/Whiz.hs 25
-normalizeGrin grin@Grin { grinFunctions = fs } = grin { grinFunctions = f fs [] (Right 1) } where
+normalizeGrin grin = setGrinFunctions (f (grinFuncs grin) [] (Right 1)) grin  where
hunk ./Grin/Whiz.hs 31
-normalizeGrin' grin@Grin { grinFunctions = fs } = grin { grinFunctions = f fs [] } where
+normalizeGrin' grin = setGrinFunctions (f (grinFuncs grin) []) grin  where
hunk ./Main.hs 73
-import qualified Grin.Interpret
hunk ./Main.hs 720
-        nf <- mapMsnd (grinPush stats') (grinFunctions x)
-        x <- return x { grinFunctions = nf }
+        nf <- mapMsnd (grinPush stats') (grinFuncs x)
+        x <- return $ setGrinFunctions nf x
hunk ./Main.hs 796
-        progress "Interpreting..."
-        (v,stats) <- Grin.Interpret.evaluate grin
-        CharIO.putStrLn $ render $ Grin.Show.prettyVal v
-        wdump FD.Stats $  Stats.print "Stats" stats
+        putErrLn "Interpreting not supported."
+        --progress "Interpreting..."
+        --(v,stats) <- Grin.Interpret.evaluate grin
+        --CharIO.putStrLn $ render $ Grin.Show.prettyVal v
+        --wdump FD.Stats $  Stats.print "Stats" stats