

WebLisp: A Lisp Interpreter that runs inside the browser - fluffster
http://christophdietze.com/weblisp

======
mpk
And a quick shout-out to JSLisp : <http://joeganley.com/code/jslisp.html> .
That was an educational piece of JS for me.

~~~
ganley
Hey, thanks! I wrote that. I went here to post it, and it was already here.

------
pmarin
Arclite is a subset of Arc written in Javascript.

<http://jonathan.tang.name/files/arclite/index.html>

~~~
fluffster
Thanks, that looks interesting.

------
owinebarger
Sweet. It appears to have proper tail recursion.

(define (fib n) (fib-help n (lambda (fn fn-1) fn)))

(define (fib-help n k) (if (<= n 1) (k 1 1) (fib-help (- n 1) (lambda (fn-1
fn-2) (k (+ fn-1 fn-2) fn-1)))))

(fib 1000)

------
misuba
So, are there any in-browser lisps that, you know, do something? Maybe one
that plays in the Pipes space, letting you work with feeds of various sorts?

------
softbuilder
<http://en.wikipedia.org/wiki/Greenspun%27s_Tenth_Rule>

~~~
mahmud
The Tenth Rule applies only to "sufficiently complicated" programs that add so
many features and support libraries that they become a poor subset of Lisp.

Implementing your a subset dialect of your favorite language in a
poor/hostile/new environment is quite hackish, imo.

------
Dilpil
How many of these are there anyway?

~~~
yu
Franz, Inc. Allegro Common Lisp has Prompt and Maxima: *
[http://www.franz.com/products/allegrocl/prompt/javatelnet.ht...](http://www.franz.com/products/allegrocl/prompt/javatelnet.html)
* <http://www.franz.com/success/demos/maxima/javatelnet.html>

~~~
mahmud
That is NOT a "web" Lisp; you're interacting via telnet with Franz Common
Lisp, a piece of REAL software with 20+ years of history.

Type this into it:

    
    
      (disassemble (lambda ()))
    

It should spit an assembly language listing.

~~~
latkinso42
(disassemble (lambda ()))

~~~
mahmud
Not a HN textarea form input, you type that into a Common Lisp repl
(interactive shell.) It should look like this:

    
    
      CG-USER(1): (disassemble (lambda ()))
      ;; disassembly of #<Function (:ANONYMOUS-LAMBDA 130) @ #x20ec218a>
      ;; formals: 
    
      ;; code start: #x20ec214c:
         0: e3 03       jcxz	5
         2: ff 57 8b  call	*[edi-117]      ; SYS::TRAP-WNAERR
         5: 80 7f cb 00 cmpb	[edi-53],$0   ; SYS::C_INTERRUPT-PENDING
         9: 74 03       jz	14
         11: ff 57 87  call	*[edi-121]      ; SYS::TRAP-SIGNAL-HIT
         14: 8b c7       movl	eax,edi
         16: f8          clc
         17: 8b 75 fc  movl	esi,[ebp-4]
         20: c3          ret
         21: 90          nop
    

Proof that it's not a javascript "web lisp" :-)

------
uninverted
No macros?

