summaryrefslogtreecommitdiff
path: root/src/monoize.sml
diff options
context:
space:
mode:
authorGravatar Adam Chlipala <adamc@hcoop.net>2009-04-05 10:48:11 -0400
committerGravatar Adam Chlipala <adamc@hcoop.net>2009-04-05 10:48:11 -0400
commit18b7332e738d4b97bf3bb9dfa6600277222aab33 (patch)
tree0a616d813984767dcc70ab5fe7b6409237851fc5 /src/monoize.sml
parentc042b1bb94be89cc99fe4226edc3ce920d99f56b (diff)
Threads demo
Diffstat (limited to 'src/monoize.sml')
-rw-r--r--src/monoize.sml6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/monoize.sml b/src/monoize.sml
index d974e373..620e43a5 100644
--- a/src/monoize.sml
+++ b/src/monoize.sml
@@ -984,6 +984,7 @@ fun monoExp (env, st, fm) (all as (e, loc)) =
loc)), loc)), loc)), loc)), loc),
fm)
end
+
| L.EApp ((L.EApp ((L.ECApp ((L.ECApp ((L.ECApp ((L.EFfi ("Basis", "bind"), _), _), _), _), _), t2), _),
(L.EFfi ("Basis", "transaction_monad"), _)), _),
(L.EApp ((L.ECApp ((L.EFfi ("Basis", "recv"), _), t1), _),
@@ -1002,6 +1003,8 @@ fun monoExp (env, st, fm) (all as (e, loc)) =
t1), loc)), loc)), loc),
fm)
end
+ | L.EFfiApp ("Basis", "recv", _) => poly ()
+
| L.EApp ((L.EApp ((L.ECApp ((L.ECApp ((L.ECApp ((L.EFfi ("Basis", "bind"), _), _), _), _), _), t2), _),
(L.EFfi ("Basis", "transaction_monad"), _)), _),
(L.EAbs (_, _, _,
@@ -1014,11 +1017,12 @@ fun monoExp (env, st, fm) (all as (e, loc)) =
in
((L'.EAbs ("m2", (L'.TFun (un, mt2), loc), (L'.TFun (un, un), loc),
(L'.EAbs ("_", un, un,
- (L'.ESleep (n, (L'.EApp ((L'.ERel 1, loc),
+ (L'.ESleep (liftExpInExp 0 n, (L'.EApp ((L'.ERel 1, loc),
(L'.ERecord [], loc)), loc)),
loc)), loc)), loc),
fm)
end
+ | L.EFfiApp ("Basis", "sleep", _) => poly ()
| L.ECApp ((L.EFfi ("Basis", "source"), _), t) =>
let