A Lisp Interpreter for Squeak

July 15th, 2005 tonyg

This is a simple-minded (and slightly weird) Lisp interpreter for Squeak Smalltalk. It doesn’t have a REPL under Morphic, but I’ve hacked on it to provide a minimal Morphic UI.

It got me thinking about Lisp Machines again. What if the existing Squeak infrastructure could be exploited to build a Scheme Machine? The minimal addition required to the Squeak VM would be a tail-call opcode. Once tail calls are possible, a compiler could be written to take Scheme code to Squeak bytecode. A full module system could be implemented fairly easily, thanks to Smalltalk’s non-separation of compile-time and runtime. The mapping between Smalltalk constructs and Scheme Machine constructs might be:

Scheme MachineSmalltalk
ModuleClass
Module instantiationsInstances
Global variablesProbably wouldn’t be implemented — you’d use module-local variables instead, just like MzScheme’s module system
Module-local functionsInstance methods
Module-local variablesInstance variables

Integration with the debugger might be tricky. Many system utilities expect to be able to decompile bytecode into Smalltalk; a major refactoring might be needed for multi-language integration within Squeak. One would have to tag each method with the decompiler to use, update each UI widget to display these annotations etc.

Entry Filed under: Technology, Programming, Our Software

Leave a Comment

Required

Required, hidden

Some HTML allowed:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>

Trackback this post  |  Subscribe to the comments via RSS Feed

Calendar

July 2005
M T W T F S S
    Aug »
 123
45678910
11121314151617
18192021222324
25262728293031

Most Recent Posts