summaryrefslogtreecommitdiff
path: root/devel/compiler/SMacros.hs
diff options
context:
space:
mode:
authoraarne <aarne@cs.chalmers.se>2007-03-27 16:32:44 +0000
committeraarne <aarne@cs.chalmers.se>2007-03-27 16:32:44 +0000
commit1c1acf1b971d13a496a92b9d8d6b14fde85e28f3 (patch)
tree7fc40594193cbf6435feb5425ee2e4feb2652d32 /devel/compiler/SMacros.hs
parent273dc7120f9ce0b469dc081d6a3382f096a4f97b (diff)
top-level toy compiler - far from complete
Diffstat (limited to 'devel/compiler/SMacros.hs')
-rw-r--r--devel/compiler/SMacros.hs16
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