WebLisp: A Lisp Interpreter that runs inside the browser
christophdietze.com
christophdietze.com
(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)
Implementing your a subset dialect of your favorite language in a poor/hostile/new environment is quite hackish, imo.
Type this into it:
(disassemble (lambda ()))
It should spit an assembly language listing. 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" :-)