Kaz Kylheku <kkylheku@gmail.com> wrote:
+---------------
| Rob Warnock <rpw3@rpw3.org> wrote:
| > Rainer Joswig <joswig@lisp.de> wrote:
| > +---------------
| >| rpw3@rpw3.org (Rob Warnock) wrote:
| >| > Well, there's always Lisp500 <http://www.modeemi.fi/~chery/lisp500/>.
| >| > 88 initial defined symbols, float-only arithmetic, 500 LOC of *very*
| >| > dense C! Then loading "init500.lisp" adds another 761 symbols,
| >| > fleshing out the CL compatibility a *lot*.
| >|
| >| ... How readable is the C part of Lisp500?
| > +---------------
| >
| > Almost totally *unreadable*, actually! ;-} It's full of
| > "obfuscated C"-style compressions to keep the LOC small, e.g.:
| [ snip ]
| > #define NE *g
| [ snip ]
| > lval eval_multiple_value_call(lval *f, lval ex) { lval *g=f+3; lval l;
| > f[1]=evca(f, ex); for (ex=cdr(ex); ex; ex=cdr(ex)) { *g=*f;
| ^^
| Geez, how confusing! Why is this *g explicitly written, instead of
| taking advantage of the abstracting power of the NE macro? ;)
+---------------
Heh. Now you see one of the reasons I'm writing my own
"Quick & Dirty Lisp" (QDL) instead of just using Lisp500!! ;-} ;-}
[Well, there were several other reasons, too... ;-} ]
You might be amused to know that even Lisp500's *author*
occasionally has had trouble remembering how it works: ;-} ;-}
http://www.modeemi.fi/~chery/lisp500/
...
2004-05-11 Implemented flet and labels in the compiler. During a
short break in working on lisp500, I apparently managed to forget how
the stack discipline goes. It was somewhat painful to figure out how.
...
That said, I still admire Lisp500 for the huge fraction of CL that
it manages to achieve in only 500 lines of C & 5800 lines of Lisp.
But I wouldn't recommend it for study for someone new to Lisp...
-Rob
-----
Rob Warnock <rpw3@rpw3.org>
627 26th Avenue <URL:http://rpw3.org/>
San Mateo, CA 94403 (650)572-2607