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

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
  • fakelisp

    Lisp as a Python module (don't take it seriously though)

  • coalton

    Coalton is an efficient, statically typed functional programming language that supercharges Common Lisp.

  • It's still… not the same. In CL (and specially with SBCL), we get compile time (type) errors and warnings at the blink of an eye, when we compile a single function with a keystroke (typically C-c C-c in Slime).

    And there's also been improvement, see Coalton for a ML on top of CL. (https://github.com/coalton-lang/coalton/)

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • hy

    A dialect of Lisp that's embedded in Python

  • Not exactly the same (doesn't embed into the source like this did), but I believe Hylang[0] is the best Lisp package available for modern Python.

    [0] https://github.com/hylang/hy

  • es6-lisp

    A quick n' dirty lisp interpreter in modern es6.

  • At some point I tried translating this demo into es6 if anyone's interested [0].

    Check out the tests to see how far I got [1]

    Pretty fun exercise =)

    [0]: https://github.com/djtriptych/es6-lisp

  • lone

    The standalone Linux Lisp

  • I made something somewhat close to that: a freestanding lisp. It targets the Linux kernel directly. No libc.

    https://github.com/lone-lang/lone

  • MicroHs

    Haskell implemented with combinators

  • > expand into lambda calculus statement that could then be compiled down to different sets of combinators

    This approach can be reasonably efficient for implementing Haskell, as shown in [1] and the much more concise [2].

    [1] https://github.com/augustss/MicroHs

    [2] https://crypto.stanford.edu/~blynn/compiler/

  • sedlisp

    Lisp implementation in sed

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

    WorkOS logo
  • makelisp

    Lisp implementation in GNU make (by shinh)

  • beflisp

    Lisp implementation in Befunge

  • bflisp

    C compiler and Lisp interpreter in Brainfuck

  • Carp

    A statically typed lisp, without a GC, for real-time applications.

  • ferret

    Ferret is a free software lisp implementation for real time embedded control systems. (by nakkaya)

  • ulisp

    A version of the Lisp programming language for ATmega-based Arduino boards.

  • fe

    A tiny, embeddable language implemented in ANSI C (by rxi)

  • buckaroo

    Buckaroo - the data wrangling assistant for pandas. Quickly explore dataframes, and run pandas commands via a GUI. Works inside the jupyter notebook.

  • I used Norvig’s lisp2.py to build a low code UI. I modified the interpreter to accept JSON flavored lisp, basically replace parens with brackets. The upside is that it was very very easy to make a react front end that manipulates JSON (JLisp). My thinking was, I need a serialization format for operations from the front end, and a way to interpret them. I could write my own language that no one has heard of, or use lisp, which few have used.

    https://github.com/paddymul/buckaroo/blob/main/buckaroo/jlis...

  • rabbit-scheme

    Guy Steele's RABBIT Scheme compiler

  • If it exists, it's probably among the ones listed at https://www.softwarepreservation.org/projects/LISP/

    If it doesn't exist, you could try modifying one of the listed implementations.

  • calysto_scheme

    A Scheme kernel for Jupyter that can use Python libraries

  • lisp-rs

  • SaaSHub

    SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives

    SaaSHub logo
NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts