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
commit1841f3b75ec441d16d289cb768526c374f16960a (patch)
treeba523b94cf3cd06fdc212a16b0ae735ad2d11aa9 /src/mono_reduce.sml
parent627c93b9779f632bd8d90e7e2de26a5a9c197f08 (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