diff options
| author | aarne <aarne@cs.chalmers.se> | 2007-03-27 16:32:44 +0000 |
|---|---|---|
| committer | aarne <aarne@cs.chalmers.se> | 2007-03-27 16:32:44 +0000 |
| commit | 1c1acf1b971d13a496a92b9d8d6b14fde85e28f3 (patch) | |
| tree | 7fc40594193cbf6435feb5425ee2e4feb2652d32 /devel/compiler/SMacros.hs | |
| parent | 273dc7120f9ce0b469dc081d6a3382f096a4f97b (diff) | |
top-level toy compiler - far from complete
Diffstat (limited to 'devel/compiler/SMacros.hs')
| -rw-r--r-- | devel/compiler/SMacros.hs | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/devel/compiler/SMacros.hs b/devel/compiler/SMacros.hs new file mode 100644 index 000000000..46d778234 --- /dev/null +++ b/devel/compiler/SMacros.hs @@ -0,0 +1,16 @@ +module SMacros where + +import AbsSrc + +apps :: Exp -> (Exp,[Exp]) +apps e = (f,reverse xs) where + (f,xs) = aps e + aps e = case e of + EApp f x -> let (f',xs) = aps f in (f',x:xs) + _ -> (e,[]) + +constr :: Ident -> [Exp] -> Exp +constr = ECst + +mkApp :: Exp -> [Exp] -> Exp +mkApp f = foldl EApp f |
