summaryrefslogtreecommitdiff
path: root/lib/js/urweb.js
diff options
context:
space:
mode:
Diffstat (limited to 'lib/js/urweb.js')
-rw-r--r--lib/js/urweb.js13
1 files changed, 8 insertions, 5 deletions
diff --git a/lib/js/urweb.js b/lib/js/urweb.js
index 13f93867..a1b4b1d2 100644
--- a/lib/js/urweb.js
+++ b/lib/js/urweb.js
@@ -181,7 +181,7 @@ function freeClosure(n) {
}
function cr(n) {
- return closures[n]();
+ return closures[n];
}
function flatten(cls, tr) {
@@ -863,6 +863,7 @@ function exec0(env, e) {
stack = stack.next;
} else {
e = fr.a.data;
+ if (e == null) alert("Oh no!");
fr.a = fr.a.next;
}
break;
@@ -983,9 +984,11 @@ function exec0(env, e) {
e = e.e;
break;
case "e":
- var env0 = env;
- var e0 = e.e;
- e = {c: "c", v: cs(function() { return exec0(env0, e0); })};
+ e = {c: "c", v: cs({c: "wc", env: env, body: e.e})};
+ break;
+ case "wc":
+ env = e.env;
+ e = e.body;
break;
default:
throw ("Unknown Ur expression kind " + e.c);
@@ -996,7 +999,7 @@ function exec0(env, e) {
function exec(e) {
var r = exec0(null, e);
- if (r != null && r.body)
+ if (r != null && r.body != null)
return function(v) { return exec0(cons(v, r.env), r.body); };
else
return r;