gjc@BUCSF.BU.EDU (George J. Carrette) (04/24/88)
I have done a demonstration implementation called SIOD, "Scheme In One Defun" originally in zetalisp, but now in C. A reasonable effort was made to keep the size and complexity down. The result is one file under 20 thousand bytes. Features: * (double) floating pointer numbers, +,-,*,/,>,<,eql * symbols, oblist * lists, cons,car,cdr,setcar,setcdr, assq, copy-list, eq. * define,set!,lambda,quote,if,progn * garbage collection, (copy style), heap size fixed on startup. * control-c quit interrupt, floating point exception handler. * Ran on 4.2BSD and VAX/VMS It is very easy to add new subrs and special forms (e.g. cons-stream), which I plan to do, up to 5000 bytes worth. The current version is available by anonymous ftp from bu-it.bu.edu in /pub/siod.c I hope the small size and straightfoward implementation make it easy for interested parties to port it to their microcomputers. Let me know if you have any problems. The implementation is moderately fast, with (fib 20) on an Encore Multimax taking 3.5 times longer in Cscheme than in SIOD. On a SUN4-280 SIOD did (fib 20) in 4.1 seconds, consing about 100 thousand cells. N.B. I like to time fib with: (define (fib x) (if (< x 2) x (+ (fib (- x 1)) (fib (- x 2))))) -gjc