summaryrefslogtreecommitdiff
path: root/src/mono_reduce.sml
diff options
context:
space:
mode:
authorGravatar Adam Chlipala <adamc@hcoop.net>2008-11-06 09:21:34 -0500
committerGravatar Adam Chlipala <adamc@hcoop.net>2008-11-06 09:21:34 -0500
commitd7bd7d38e8f785b7366495ce977379929e5eb913 (patch)
treeba523b94cf3cd06fdc212a16b0ae735ad2d11aa9 /src/mono_reduce.sml
parenteaa8aa9f310d95a31747ea4c81ee1013c1734a7d (diff)
Monoizing FFI transactions correctly
Diffstat (limited to 'src/mono_reduce.sml')
-rw-r--r--src/mono_reduce.sml11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/mono_reduce.sml b/src/mono_reduce.sml
index 07c7c5f5..57a9cc6d 100644
--- a/src/mono_reduce.sml
+++ b/src/mono_reduce.sml
@@ -352,10 +352,15 @@ fun exp env e =
| ELet (x, t, e', b) =>
let
+ fun doSub () = #1 (reduceExp env (subExpInExp (0, e') b))
+
fun trySub () =
- case e' of
- (ECase _, _) => e
- | _ => #1 (reduceExp env (subExpInExp (0, e') b))
+ case t of
+ (TFfi ("Basis", "string"), _) => doSub ()
+ | _ =>
+ case e' of
+ (ECase _, _) => e
+ | _ => doSub ()
in
if impure e' then
let