summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar Adam Chlipala <adam@chlipala.net>2012-03-03 16:20:54 -0500
committerGravatar Adam Chlipala <adam@chlipala.net>2012-03-03 16:20:54 -0500
commit4092f090ff1584cd0a9a32c4c2f8943bf878ec8a (patch)
tree9b4dcc27bb6d0fa4d7c2deec53839f321c3f3fae /src
parent8ef7bfdc4e8dc076b146d3c2eaf8a08e350b8a63 (diff)
Avoid 'not fully determined' errors for fancy tasks
Diffstat (limited to 'src')
-rw-r--r--src/monoize.sml14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/monoize.sml b/src/monoize.sml
index 1331d065..d0be7449 100644
--- a/src/monoize.sml
+++ b/src/monoize.sml
@@ -4115,6 +4115,20 @@ fun monoDecl (env, fm) (all as (d, loc)) =
let
val (e1, fm) = monoExp (env, St.empty, fm) e1
val (e2, fm) = monoExp (env, St.empty, fm) e2
+
+ val un = (L'.TRecord [], loc)
+ val t = if MonoUtil.Exp.exists {typ = fn _ => false,
+ exp = fn L'.EFfiApp ("Basis", "periodic", _) => true
+ | _ => false} e1 then
+ (L'.TFfi ("Basis", "int"), loc)
+ else
+ un
+
+ val e2 = (L'.EAbs ("$x", t, (L'.TFun (un, un), loc),
+ (L'.EAbs ("$y", un, un,
+ (L'.EApp (
+ (L'.EApp (e2, (L'.ERel 1, loc)), loc),
+ (L'.ERel 0, loc)), loc)), loc)), loc)
in
SOME (env,
fm,