Join the discussion

Write your take first — we'll ask for email only when you're ready to publish.

  • Hacker News
  • 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.

    https://github.com/timonoko/nokolisp

  • Strangely, Peter's 1987 Ph.D. thesis cites itself (reference 90), but with the year being off by one (1986).

    Writing a LISP in Python is only for educational use, or to have a boostrap LISP that you can write a better (faster) LISP in.

  • Classics!

    There is a different take on Lisp in Python - fakelisp. It's literally Lisp in Python, not an interpreter, but a syntax sugar library that allows embedding Lisp snippets into valid Python.

    https://codeberg.org/okaleniuk/fakelisp

        from fakelisp import *
    
        # And now you can start mixing Python and LISP
        X = (BEGIN
            (SET (F) (LAMBDA (X)
                (IF (EQ (X) (1))
                    (1)
                    (MUL (X) (F (SUB (X) (1)))))))
    
            (LIST (F (4)) (42)))
    
        # Back to Python any time
        print "x: ", str(X)
  • And in the other direction, here's a Python interpreter written in Lisp: https://github.com/metawilm/cl-python
  • Probably way faster as well.
  • also in the interop topic:

    Common Lisp for Python: https://github.com/marcoheisig/cl4py

    call Python from CL: https://github.com/digikar99/py4cl2-cffi

  • Similarly - 80 line LISP interpreter with integers, lexical scope, first class functions

    https://leontrolski.github.io/interpreter.html

  • Writing a Lisp is one of my favorite projects. I try to do it every year or two, taking a different approach each time.
  • The one where you replaced parentheses with the crying laughing emojis was definitely the worst.
  • 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.

    by tosh
  • First day of paradigms course in the 2000s and prof says "if your opinion of Scheme is too many parentheses, then you're an idiot."

    Needless to say that was my opinion and every day I think, more and more, how right he was.

    (later I did make some gui apps that included scripting and chose s-expr syntax because of how simple it is to implement it)

  • I've been working on a similar (ish) project for a while: Ribbit (https://github.com/udem-dlteam/ribbit). Supports a full R4RS REPL (with tail-calls) in the same sizes as Lispy (8Kb for JavaScript and 6.5Kb for x86)!
  • (how-to in-python (write (interpreter lisp)))
  • Yes, but to be fair, you only have a couple minutes to fight the HN title regex.
  • 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

  • I've always found MAL ("Make-A-Lisp" https://github.com/kanaka/mal) a bit more approachable, probably because I was out after creating my own programming language before I've written much Python. It's language agnostic, and really easy to follow along with most programming languages out there, explaining everything as you progress.

    That it's language agnostic and somehow matters feels weird now a lot of time (and experience I suppose) afterwards, but back when I only knew 1-2 languages by heart, also having to face understanding Python at the same time from Norvigs guide/reference made it slightly more complicated for me.

    I use this as a litmus test now when coming across new languages (implementing MAL in the new language), as it's such an easy approach to practically test large parts of the new language, and there is always host-language-specific tricks you can learn along the way.

  • Is it classics day or something? (Fine with us!)

    Related:

    (How to Write a (Lisp) Interpreter (In Python)) (2010) - https://news.ycombinator.com/item?id=39665939 - March 2024 (91 comments)

    (How to Write a (Lisp) Interpreter (In Python)) (2010) - https://news.ycombinator.com/item?id=30443949 - Feb 2022 (9 comments)

    (How to Write a (Lisp) Interpreter (In Python)) - https://news.ycombinator.com/item?id=30327437 - Feb 2022 (3 comments)

    (How to Write a (Lisp) Interpreter (In Python)) - https://news.ycombinator.com/item?id=26036431 - Feb 2021 (1 comment)

    How to Write a Lisp Interpreter In Python (2010) - https://news.ycombinator.com/item?id=20590439 - Aug 2019 (29 comments)

    How to Write a Lisp Interpreter in Python (2010) - https://news.ycombinator.com/item?id=12777852 - Oct 2016 (28 comments)

    How to Write a Lisp Interpreter in Python (2010) - https://news.ycombinator.com/item?id=7825054 - May 2014 (41 comments)

    (How to Write a ((Better) Lisp) Interpreter (in Python)) - https://news.ycombinator.com/item?id=1746916 - Oct 2010 (10 comments)

    (How to Write a (Lisp) Interpreter (in Python)) - https://news.ycombinator.com/item?id=1745322 - Sept 2010 (39 comments)

    by dang
  • I feel like we need a vibe coded guide in this modern day and age.
  • I want to see Dang’s list of fav classics :)