4 ms·
I'm currently working through the implementation of my own personal Lisp, following the awesome MAL process [0]. It's instructive to compare the result with the
by KineticLensman 8y ago
I'm currently working through the implementation of my own personal Lisp, following the awesome MAL process [0]. It's instructive to compare the result with the language as defined in the early 60s and available to programmers then (e.g. as defined by the Lisp manual referenced in the video). One thing that immediately stood out was the use of GOTO ('GO' actually) in the early Lisp rather than some sort of loop or tail recursion.
Incidentally, I've been wondering what app I should write to test my Lisp. The obvious end-state mentioned in the MAL guide is to self-host a Lisp, but I'm thinking it would be more appropriate (and fun) to re-implement one of the early chatbots like ELIZA [1].
[0] https://github.com/kanaka/mal/blob/master/process/guide.md https://github.com/kanaka/mal/blob/master/process/guide.md
[1] https://en.wikipedia.org/wiki/ELIZA https://en.wikipedia.org/wiki/ELIZA
- gekkonier 8y agoI would consider writing a small standardlib for your lisp. While writing it you will encounter things you can optimize perhaps.
- KineticLensman 8y agoCool! That is a great offer. If you watch my progress SITREPs at [0] you'll get a feel for when it might ready. I'm behind on the SITREP updates but I'm in fact just debugging macro expansion (step 8) at the moment. [0] https://www.non-kinetic-effects.co.uk/blog/2019/01/21/MAL-2 https://www.non-kinetic-effects.co.uk/blog/2019/01/21/MAL-2
- nikofeyn 8y agoi read his comment as “[if i were you] i would consider...”.
- gekkonier 8y agoYes, I'm sorry. It was meant as an answer to 'Incidentally, I've been wondering what app I should write to test my Lisp.'
- KineticLensman 8y agoMy bad! And I can't even claim not to be a native-English speaker. It is a good idea and in fact I'm already sort of going down that route. I'm finding that using macros to define new functionality (rather than extend the core set of built-in functions) is a good way to tease out implementation issues as they somewhat stress the underlying mechanisms. I think my first lib functions will be IO-related.
- selimthegrim 8y agoI too might have a couple things in mind. How do I get in touch with you (gp, KineticLensman although happy to hear from immediate parent too)?
- cjallen88 8y agoThe book Paradigms of AI Programming is available for free on github, and implements something like ELIZA in Common Lisp. I really recommend it. https://github.com/norvig/paip-lisp/blob/master/README.md https://github.com/norvig/paip-lisp/blob/master/README.md
- KineticLensman 8y agoGreat recommendation, thanks
- kwccoin 8y agoWaiting for it and can it port to multiple platform like pi, iOS, Andorid, browser ... etc. Obviously can be a joint effort but once the basic is done, we can have a new and refreshing effort. I always think that why PAIP is great you always have this feeling like Star Trek NG. Suddenly you have a function that works. BTW, I think the other web sites http://www.gigamonkeys.com/book/ http://www.gigamonkeys.com/book/ would be good. Not one person but if there is a basis we can grow the community, especially if one can port to Pi and iOS.
- abecedarius 8y agoI had fun doing last year's https://adventofcode.com https://adventofcode.com in my own Lisp dialect. It's a pretty big stress for a personal toy language, but not too out there. (Added: the code: https://github.com/darius/squeam/blob/master/eg/advent-of-code/18/ https://github.com/darius/squeam/blob/master/eg/advent-of-co...)