diff options
author | Adam Chlipala <adamc@hcoop.net> | 2009-09-22 15:12:09 -0400 |
---|---|---|
committer | Adam Chlipala <adamc@hcoop.net> | 2009-09-22 15:12:09 -0400 |
commit | ee1639d9e3afa41c85382ab991e2229a91be4c21 (patch) | |
tree | 53528b85a9933aa85de2178d4f23249408427d4c /lib/js/urweb.js | |
parent | 5053cc1cc65d193cc4d3298a9d2485c0139a9bf9 (diff) |
Quoting JavaScript working
Diffstat (limited to 'lib/js/urweb.js')
-rw-r--r-- | lib/js/urweb.js | 13 |
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; |