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!
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).
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:
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:
14 comments
[ 3.1 ms ] story [ 45.6 ms ] threadps: Firefox Nightly 37a / Archlinux / 4GB
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.
I agree with your sentiment in general, although I feel Gambit is pretty well-known, especially because of its merits for application delivery.
So wrong, yet so right. I would hire this guy.
(working swell in Chrome)
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.
(jseval "alert('hello')")