logo

(How to Write a (Lisp) Interpreter (In Python)) (2010)

Posted by tosh |4 hours ago |33 comments

chombier 3 hours ago[1 more]

If you ever wondered how to write a programming language, this is probably the best resource to get started (and then of course Crafting Interpreters).

See also part 2 https://norvig.com/lispy2.html

zahlman 3 hours ago[1 more]

(how-to in-python (write (interpreter lisp)))

timonoko an hour ago

I actually perfected the Norvig Lisp at one time. It has compiler to python and just everything. Those very few here that can actually read code, understand why this project soon exploded into biggest piece of odorous excrement.

https://github.com/timonoko/nokolis.py

azhenley 3 hours ago[1 more]

Writing a Lisp is one of my favorite projects. I try to do it every year or two, taking a different approach each time.

timonoko an hour ago[1 more]

One of those exercises that are now just boring, because AI does it better.

My Lisp from 1975 was actually used in real world and highly lucrative. Gemini could read the source code, but it told that my code was piece of shit and cannot be implemented in 64-bit world without drastic changes, so it made an example. But that version was just too advanced and too complex as a study subject. There are already enuff good Lisps in the world, methinks.

tosh 3 hours ago[1 more]

I can't recommend highly enough to implement a simple lisp (or a forth).

Illuminating experience and it will also help you see (among many other things) the parentheses in a different light.

librasteve 3 hours ago

or you could just use Raku and its “surprisingly good lisp impression”:

https://www.codesections.com/blog/raku-lisp-impression/

urcite_ty_kokos 3 hours ago

Appreciated the title xD

joshuamorton 2 hours ago

There are edge cases where this fails, but `def parse(s): return json.loads('['+re.sub('([")])\s*(["(])','\g<1>,\g<2>',re.sub('[^()\s]+','"\g<0>"',s)).replace('(','[').replace(')',']')+']')` is a surprisingly robust lisp parser.

e12e 3 hours ago

(2010)?

2 hours ago

Comment deleted

timonoko 2 hours ago[6 more]

[fagged]

RedCinnabar 2 hours ago[3 more]

Man these kind of resources have aged really bad in the age of AI.