from the SqueakMap description: -------------
LispKit is a kit for building one's own custom Lisp implementations it's beta !!
provides:
1) LispKernel, a minimal Lisp interpreter with - dynamic scoping - the fundamental special forms: let, setq, and, or, if, defun, defmacro ... - a few basic functions: list, car, funcall, null ... - catch/throw, unwind-protect - a GUI
2) SLisp, a Lisp dialect tightly integrated with Smalltalk
usage:
by subclassing LispKernel one can implement a custom dialect of Lisp. see SLisp for an example
specificities
LispKernel is implemented as a pure Smalltalk extension. There is no parser nor compiler; the interpreter is the 'eval' lisp function itself. Lisp code can be written as plain Smalltalk arrays.
advantages: - we can chase the senders of a symbol - we can use the debugger to debug Lisp code - we can easily implement powerful control structures - we can integrate Lisp and Smalltalk
... see LispKernel class comments for more
What a nice piece of code!
I do not have time to dive into it now, but I would like to know how difficult would it be to have a Scheme interpreter ?
Is there absolutely no restriction regarding the syntax ? This is a nice trick you used. No need of parser...
I really like it. Currently there is no Smalltalk-like debugger for Scheme. This might be a good thing to implement...
Cheers, Alexandre
Am Jun 1, 2006 um 9:01 PM schrieb Stéphane Rollandin:
from the SqueakMap description:
LispKit is a kit for building one's own custom Lisp implementations it's beta !!
provides:
- LispKernel, a minimal Lisp interpreter with
- dynamic scoping
- the fundamental special forms: let, setq, and, or, if, defun,
defmacro ...
- a few basic functions: list, car, funcall, null ...
- catch/throw, unwind-protect
- a GUI
- SLisp, a Lisp dialect tightly integrated with Smalltalk
usage:
by subclassing LispKernel one can implement a custom dialect of Lisp. see SLisp for an example
specificities
LispKernel is implemented as a pure Smalltalk extension. There is no parser nor compiler; the interpreter is the 'eval' lisp function itself. Lisp code can be written as plain Smalltalk arrays.
advantages:
- we can chase the senders of a symbol
- we can use the debugger to debug Lisp code
- we can easily implement powerful control structures
- we can integrate Lisp and Smalltalk
... see LispKernel class comments for more
Alexandre Bergel wrote:
What a nice piece of code!
I do not have time to dive into it now, but I would like to know how difficult would it be to have a Scheme interpreter ?
I am a newbie in this domain so I can not really answer you yet.
I'm using this project to teach myself a bit more about Lisps, so far the only one I know rather well is Emacs Lisp, hence the dynamic scoping we have at the moment in LispKit.
Scheme is on my list for sure !
but I encourage you to give it a try (and tell me if changes are required for a Scheme support); the code is actually very simple and short, the package reaches 20 kb only because it's packed with test cases and documentation.
Is there absolutely no restriction regarding the syntax ? This is a nice trick you used. No need of parser...
there are some restrictions: $' instead of a plain ' for quoting, no composed-names etc.. but that's no big deal. things come along incredibly well !
plus the lisp code is nice to read with Shout
I really like it. Currently there is no Smalltalk-like debugger for Scheme. This might be a good thing to implement...
lots of fun to come :)
Stef
Scheme is static so there is closures for functions a function has an environment in addition
Stef
On 2 juin 06, at 00:25, Stéphane Rollandin wrote:
Alexandre Bergel wrote:
What a nice piece of code! I do not have time to dive into it now, but I would like to know how difficult would it be to have a Scheme interpreter ?
I am a newbie in this domain so I can not really answer you yet.
I'm using this project to teach myself a bit more about Lisps, so far the only one I know rather well is Emacs Lisp, hence the dynamic scoping we have at the moment in LispKit.
Scheme is on my list for sure !
but I encourage you to give it a try (and tell me if changes are required for a Scheme support); the code is actually very simple and short, the package reaches 20 kb only because it's packed with test cases and documentation.
Is there absolutely no restriction regarding the syntax ? This is a nice trick you used. No need of parser...
there are some restrictions: $' instead of a plain ' for quoting, no composed-names etc.. but that's no big deal. things come along incredibly well !
plus the lisp code is nice to read with Shout
I really like it. Currently there is no Smalltalk-like debugger for Scheme. This might be a good thing to implement...
lots of fun to come :)
Stef
There are some other difference like the tail-recursion and the macro mechanism...
Cheers, Alexandre
Am Jun 2, 2006 um 11:29 AM schrieb stéphane ducasse:
Scheme is static so there is closures for functions a function has an environment in addition
Stef
On 2 juin 06, at 00:25, Stéphane Rollandin wrote:
Alexandre Bergel wrote:
What a nice piece of code! I do not have time to dive into it now, but I would like to know how difficult would it be to have a Scheme interpreter ?
I am a newbie in this domain so I can not really answer you yet.
I'm using this project to teach myself a bit more about Lisps, so far the only one I know rather well is Emacs Lisp, hence the dynamic scoping we have at the moment in LispKit.
Scheme is on my list for sure !
but I encourage you to give it a try (and tell me if changes are required for a Scheme support); the code is actually very simple and short, the package reaches 20 kb only because it's packed with test cases and documentation.
Is there absolutely no restriction regarding the syntax ? This is a nice trick you used. No need of parser...
there are some restrictions: $' instead of a plain ' for quoting, no composed-names etc.. but that's no big deal. things come along incredibly well !
plus the lisp code is nice to read with Shout
I really like it. Currently there is no Smalltalk-like debugger for Scheme. This might be a good thing to implement...
lots of fun to come :)
Stef
squeak-dev@lists.squeakfoundation.org