LispKit: a kit for building one's own custom Lisp implementation 

LispKit provides:

1) an extensible minimal Lisp-2 interpreter (the kernel) with
	- dynamic scoping (like Emacs Lisp)
	- all fundamental special forms: let, setq, and, or, if, defun, defmacro ...
	- more than 100 basic functions: list, car, funcall, null ...
	- catch/throw, unwind-protect
	- a GUI:
			LispKernel openNew     "doIt"
			ELisp openNew 		"doIt ..this one is more usable"

2) a draft for a Common Lisp like dialect
			CLisp openNew 		"doIt"		
							
3) ULisp, a full-fledged Scheme implementation	
			ULisp openNew 		"doIt"
					
4) SScheme, a much slower ULisp with support for R5RS hygienic macros						
			SScheme openNew     "doIt"
	
5) an ULisp version featuring a CLOS-like object system (adapted from STKlos)
			LKOSULisp openNew  "doIt" 

6) turtles :)
	... see LKTurtlePlayGround class comment for details


LispKernel usage:

	subclasses of LispKernel can implement their own dialect of Lisp, by adding new functions and special forms and/or by overriding methods.
	see SLisp, CLisp  and ULisp for examples:
	- SLisp integrates Smalltalk into LispKernel
	- CLisp is a static Lisp-2 with special variables like Common Lisp
	- ULisp is a comprehensive Scheme implementation


implementation peculiarities

	LispKernel is a pure Smalltalk extension. There is no parser (only the "read" lisp function) nor compiler; the interpreter is the 'eval' lisp function itself (see LispKernel>>#eval:)

	Lisp code can be written as plain Smalltalk arrays, such as

	#(defmacro addToList (x y) `(+ ,x ,@y))  "printIt" 

	the conversion into Lisp data is straightforward: see the very simple code in Array>>#asCons which converts the array into a tree of cons cells. example:

	#(defun add (x y) (+ x y)) asCons     "exploretIt"

	this approach has many advantages. for example:
	- we can chase the senders of a symbol: try [defun] (alt-n)
	- we can use the debugger to debug Lisp code
	- we can easily implement powerful control structure (see catch/throw) 
	- we can integrate Lisp and Smalltalk (see SLisp or ELisp class>>turtleGraphics)

... see LispKernel and its subclasses class comments for more documentation
		