summaryrefslogtreecommitdiff
path: root/src/mono_reduce.sml
diff options
context:
space:
mode:
authorGravatar Adam Chlipala <adamc@hcoop.net>2008-10-21 09:50:19 -0400
committerGravatar Adam Chlipala <adamc@hcoop.net>2008-10-21 09:50:19 -0400
commitf750e27d0e16da032227dbc71ecb7c63f5b77bc7 (patch)
treec1cd77d3f82dedbd270450204612186c547a83e8 /src/mono_reduce.sml
parent4f6178266ffe0bf5423878b46486b82c19a56810 (diff)
Binops; equality tested on int; lame 404 substitute
Diffstat (limited to 'src/mono_reduce.sml')
-rw-r--r--src/mono_reduce.sml6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/mono_reduce.sml b/src/mono_reduce.sml
index e288e34e..e97f3461 100644
--- a/src/mono_reduce.sml
+++ b/src/mono_reduce.sml
@@ -54,6 +54,9 @@ fun impure (e, _) =
| EApp ((EFfi _, _), _) => false
| EApp _ => true
+ | EUnop (_, e) => impure e
+ | EBinop (_, e1, e2) => impure e1 orelse impure e2
+
| ERecord xes => List.exists (fn (_, e, _) => impure e) xes
| EField (e, _) => impure e
@@ -233,6 +236,9 @@ fun summarize d (e, _) =
| EApp _ => [Unsure]
| EAbs _ => []
+ | EUnop (_, e) => summarize d e
+ | EBinop (_, e1, e2) => summarize d e1 @ summarize d e2
+
| ERecord xets => List.concat (map (summarize d o #2) xets)
| EField (e, _) => summarize d e