I now wonder whether this was the case with McCarthy's Lisps as well.
I now wonder whether this was the case with McCarthy's Lisps as well.
I guess that the Lisp described by Graham does not describe any mathematical operations, since they aren't really required to construct a metacircular evaluator, which is the selling point of the whole article. You don't need numbers for purely symbolic processing; if absolutely required, you can emulate them using Church encoding. Or you could try and make your Lisp dialect practically useful, and extend it with numeric types and operations.
[1] http://lib.store.yahoo.net/lib/paulgraham/jmc.ps via http://www.paulgraham.com/rootsoflisp.html
Try this in kilo LISP:
(load 'src//nmath)
(times '(1 2 3) '(4)) * (load 'src//nmath)
? undefined: null
You have to first load klsrc which defines objects required by src/nmath: * (load 'klsrc)
t
* (load 'src//nmath)
t
* (times '(1 2 3) '(4))
(4 9 2)Edit: If you cannot/will not use MAKE, just do
(load 'klsrc)
(suspend 'klisp)
After that you do not have to load klsrc any longer.A bit funky if you're coming from a Lisp that actually does have numbers that evaluate to themselves, but when it hits you it hits you :)