hi!
I think I said it in some previous mail, if not here it goes/
to try to understand kernel better I wanted to do an implementation of
it, so I started it last week and it's now in a state that can be
called an alpha implementation of kernel, for now it's called squim
and it's hosted on github:
http://github.com/marianoguerra/squim
it has a barebone page with a really basic REPL here:
http://marianoguerra.github.com/squim/
the tests are here:
http://marianoguerra.github.com/squim/test/
about the details:
it's implemented in js using requirejs for modularity and a pattern
that allows to load it like a normal javascript file
(
https://github.com/umdjs/umd/blob/master/amdWebGlobal.js)
tested using qunit
parser using jison
for now it doesn't have a numerical tower, just wraps javascript
numbers, I may use one of the following in the future:
*
https://github.com/dyoo/js-numbers/
*
https://github.com/jtobey/javascript-bignum
from today it's implemented using continuations :)
my objective is to keep developing it into a full implementation of
kernel (another mail will come after this one with some ideas)
if you have any questions or observations just let me know.
PS: thanks all of you for clarifying some things in the last days,
they were all doubts I got while implementing it, expect more doubts
in the future ;)
I would like to add that reading the specification while implementing
it helps to understand it a lot better, the first time I read the
specification was really hard to get the details, so my recommendation
is "to really understand kernel just write an implementation of it" ;)
implemented functions are:
* $lambda
* $define!
* display
* operative?
* applicative?
* environment?
* boolean?
* symbol?
* inert?
* ignore?
* null?
* pair?
* eq?
* equal?
* $if
* $cond
* cons
* list
* make-environment
* get-current-environment
* eval
* $vau
* wrap
* unwrap
* $sequence
* car
* cdr
* apply