From 337f53295b1848cf1d2f533e2761e7788d388a66 Mon Sep 17 00:00:00 2001 From: Danny Yoo Date: Thu, 14 Jul 2011 18:43:00 -0400 Subject: [PATCH] working on the handlers --- world/js-impl.js | 2 +- world/kernel.js | 44 +++++++++++++++++++----------------- world/private/raw-jsworld.js | 20 ++++++++-------- 3 files changed, 35 insertions(+), 31 deletions(-) diff --git a/world/js-impl.js b/world/js-impl.js index 609df98..0ef9203 100644 --- a/world/js-impl.js +++ b/world/js-impl.js @@ -26,7 +26,7 @@ EXPORTS['big-bang'] = // FIXME: typecheck for configuration options handlers.push(MACHINE.env[MACHINE.env.length - 1 - i]); } - bigBang(initialWorldValue, handlers); + bigBang(MACHINE, initialWorldValue, handlers); }); diff --git a/world/kernel.js b/world/kernel.js index ef8f4db..a806c09 100644 --- a/world/kernel.js +++ b/world/kernel.js @@ -21,33 +21,35 @@ var finalizeClosureCall = plt.baselib.functions.finalizeClosureCall; var bigBang = function(MACHINE, initW, handlers) { PAUSE(function(restart) { - - var finalWorldValue = "not done yet"; - // Once we finally get a value back, we can call - // restart at this point and finish the call to - // big-bang. - restart(function(MACHINE) { - finalizeClosureCall( - MACHINE, - finalWorldValue); - }); - // var onBreak = function() { // bigBangController.breaker(); // } // state.addBreakRequestedListener(onBreak); - // var bigBangController = rawJsworld.bigBang( - // initW, - // state.getToplevelNodeHook()(), - // unwrappedConfigs, - // caller, - // function(v) { - // state.removeBreakRequestedListener(onBreak); - // restarter(v); - // }, - // onFail); + + var toplevelNode = $('
').css('border', '2').appendTo(document.body); + + + var bigBangController = rawJsworld.bigBang( + toplevelNode.get(0), + initW, + handlers, + {}, + function(finalWorldValue) { + // state.removeBreakRequestedListener(onBreak); + + + restart(function(MACHINE) { + finalizeClosureCall( + MACHINE, + finalWorldValue); + }); + + }); + + + }); }; diff --git a/world/private/raw-jsworld.js b/world/private/raw-jsworld.js index a65e600..ade2e92 100644 --- a/world/private/raw-jsworld.js +++ b/world/private/raw-jsworld.js @@ -203,7 +203,7 @@ var rawJsworld = {}; Jsworld.gensym = gensym; - function map(a1, f) { + var map = function(a1, f) { var b = new Array(a1.length); for (var i = 0; i < a1.length; i++) { b[i] = f(a1[i]); @@ -214,7 +214,7 @@ var rawJsworld = {}; - function concat_map(a, f) { + var concat_map = function(a, f) { var b = []; for (var i = 0; i < a.length; i++) { b = b.concat(f(a[i])); @@ -223,7 +223,7 @@ var rawJsworld = {}; } - function mapi(a, f) { + var mapi = function(a, f) { var b = new Array(a.length); for (var i = 0; i < a.length; i++) { b[i] = f(a[i], i); @@ -233,7 +233,7 @@ var rawJsworld = {}; Jsworld.mapi = mapi; - function fold(a, x, f) { + var fold = function(a, x, f) { for (var i = 0; i < a.length; i++) { x = f(a[i], x); } @@ -768,7 +768,7 @@ var rawJsworld = {}; } BigBangRecord.prototype.restart = function() { - big_bang(this.top, this.world, this.handlerCreators, this.attribs); + bigBang(this.top, this.world, this.handlerCreators, this.attribs); } BigBangRecord.prototype.pause = function() { @@ -782,9 +782,11 @@ var rawJsworld = {}; }; ////////////////////////////////////////////////////////////////////// - // Notes: big_bang maintains a stack of activation records; it should be possible - // to call big_bang re-entrantly. - function big_bang(top, init_world, handlerCreators, attribs, k) { + + + // Notes: bigBang maintains a stack of activation records; it should be possible + // to call bigBang re-entrantly. + function bigBang(top, init_world, handlerCreators, attribs, k) { // clear_running_state(); // Construct a fresh set of the handlers. @@ -846,7 +848,7 @@ var rawJsworld = {}; } - Jsworld.big_bang = big_bang; + Jsworld.bigBang = bigBang;