diff options
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 |
