EXPORTS['alert'] = RUNTIME.makePrimitiveProcedure( 'alert', 1, function(MACHINE) { var elt = MACHINE.env[MACHINE.env.length - 1]; alert(String(elt)); return RUNTIME.VOID; }); EXPORTS['body'] = $(document.body); EXPORTS['$'] = RUNTIME.makePrimitiveProcedure( '$', 1, function(MACHINE) { var obj = MACHINE.env[MACHINE.env.length - 1]; return $(obj); }); EXPORTS['call-method'] = RUNTIME.makePrimitiveProcedure( 'call-method', plt.baselib.arity.makeArityAtLeast(2), function(MACHINE) { var obj = MACHINE.env[MACHINE.env.length - 1]; var methodName = MACHINE.env[MACHINE.env.length - 2]; var args = []; for (var i = 0; i < MACHINE.argcount - 2; i++) { args.push(MACHINE.env[MACHINE.env.length -1 - 2 - i]); } var result = obj[methodName].apply(obj, args); return result; }); // Javascript-specific extensions. A small experiment. EXPORTS['viewport-width'] = RUNTIME.makePrimitiveProcedure( 'viewport-width', 0, function(MACHINE) { return $(window).width(); }); EXPORTS['viewport-height'] = RUNTIME.makePrimitiveProcedure( 'viewport-height', 0, function(MACHINE) { return $(window).height(); }); EXPORTS['in-javascript-context?'] = RUNTIME.makePrimitiveProcedure( 'in-javascript-context?', 0, function(MACHINE) { return true; });