[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
OK, Jonathon, here's my info message resent:
- Name of implementation: SIOD (Scheme In One Defun)
- Implemented by whom: GJC (George Carrette)
- Supported by whom, and to what extent: GJC, for use in LMI lisp classes.
- Hardware and operating system(s): LMI-LAMBDA, ZETA(FOO?)LISP.
- Availability: Given out at my "guest lectures" to LMI lisp classes.
- Description of dialect: Sufficient to run S&ICP problems I find
most interesting. Especially streams, the meta-linguistic abtraction section,
and the interpreter/hardware sections.
- Intended use: education. Both to introduce S&ICP and to show interpreter
implementation, also "WHY MACROS OR BAD, or WHY CANT YOU READ MY CODE?"
- Implementation style: The function SEVAL (scheme EVAL) is one DEFUN.
The "text" being interpreted is syntax-checked first, but is otherwise
just the obvious s-expression. The environment representation is an ALIST.
Because of the underlying simplicity it was possible to code
special cases such as look-ahead for simple variable lookup,
and primitives such as +,/,CAR,CDR, applied to simple variable lookups
without fear. There is very little overhead in the interpreter besides
variable lookup (a single instruction, %ASSQ) and environment consing,
(cheaper by the dozen and with the volatility based GC). The resulting
interpreter is somewhat gross because of its use of specialized
macrology, but is extremely fast, especially when compiled into
MICROCODE by the Microcompiler.
- Remarks: One reason for this was to see just how far a few hours work
on a simple idea implemented somewhat grossly could go. Whenever I was
too burned out to do design-level work or debugging work (presumably on
jobs that I was paid to do) I might feel like trying to code
another SIOD special case. It is also a study for "how much effort should
go into avoiding CONS, vs other things?" It could be interesting to
compare its efficiency with JAR's compiler-style CLSCH.
- Whom to contact for more information: GJC@MC.