14 comments

[ 3.1 ms ] story [ 45.6 ms ] thread
This thing just has killed my browser.
Needs at least 2GB of available ram to build (5-10 secs on a Core2Duo laptop)

ps: Firefox Nightly 37a / Archlinux / 4GB

What browser is that? I'm using Firefox 33.1.1 on Windows 7 and it's working fine, although I've just begun to explore the app. I'm not trying to deliberately break it.

So far this is rather impressive. A Scheme REPL in the browser, not bad!

Edit: I meant Firefox 33.1.1, not 31.1.1.

Can confirm it on Firefox 33.1 in Linux. The memory usage shot upto 98% and swap got filled by 50%. Had to kill the process.
What's Gambit? Links like this without context aren't useful.
Agreed in principle. In this case it looks like a Gambit Scheme REPL.
This is hilariously awesome! Aparently it's using ymacs (which I didn't know about until now) http://www.ymacs.org/ for the 'emacs'and an emscripten compiled version of Gambit (scheme).

So wrong, yet so right. I would hire this guy.

(working swell in Chrome)

The best thing about this is that there is emulated thread management via setTimeout going on underneath to allow for Ctrl-C and other interactivity while things are running. No background workers, no running things on the server, this is some single-page engineering goodness.

It implements proper tail calls, too, so it looks like you can run `(define (f) (f)) (f)` forever.

Cool stuff, this is one of the most robust single-page REPL experiences I've seen.

Interacting with the REPL directly works for a few forms, and then it seems to get confused, interpreting output as part of the next form (I'm on Chrome for Linux version 38.0.2125.104 (64-bit)). However, when I open a buffer and write the Scheme over there, sending expressions as I usually do when developing, it works beautifully. An example:

    > (display "help!")
    help!>(newline)
    *** ERROR IN (console)@2.1 -- Unbound variable: help!>
That problem aside, this is really, really cool, and I enjoyed playing with it using a separate buffer.
Does it have tail calls, dynamic-wind, and hygienic macros? If so, I have a very interesting use for this in creating visualizations of microkanren execution traces.
I'm glad you guys appreciate the hack value! I'm personally amazed at Mihai Bazon's work on ymacs. By the way, if you want to drive the DOM from Scheme, there's the builtin function jseval:

(jseval "alert('hello')")