[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: compiling es
| Thanks and kudos to Paul && Byron for a downright excellent piece
| of software artistry.
Agreed; it looks pretty nice.
First impressions: ``let'' and ``local'' are backwards! In Scheme,
they are usually named ``fluid-let'' and ``let'', respectively. In
Perl, ``local'' means ``fluid-let''. The choice of names in es isn't
bad, but when you speak at Usenix, be sure people grok which is which!
Surprisingly, es binary is quite a bit bigger than that of rc, even
though the source isn't much bigger. Maybe gcc just generated really
bad code, or something?
Gcc complained frequently about parameters that may be clobbered by
longjmp. The dark underside of ANSI C?
Echo is a primative, but not read isn't. That's rather asymmetrical.
As in rc, null terminated strings are used. This means that things like
x = `` '' {printf 'a\000b\000c\n' }
don't work properly, which is kind of a shame.
Whatis is only for functions, not variables?
Guaranteeing that functions will be properly tail recursive would be
great.
For that matter, I agree with John that there are numerous good ideas
in Scheme that might improve es. In fact, if someone were interested
in doing an independent implementation of es, it might make sense to
start with a small scheme interpreter and give it a new repl loop.