Understanding the Power of Lisp (2020)

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

Our great sponsors
  • SonarQube - Static code analysis for 29 languages.
  • Scout APM - Less time debugging, more time building
  • SaaSHub - Software Alternatives and Reviews
  • clojure

    The Clojure programming language

    before compiling / interpreting. This rewriting happens as many times as necessary until an expression "bottoms out" and can be evaluated in terms of only built-ins.

    It's instructive to see how much of e.g., Clojure is implemented as macros. https://github.com/clojure/clojure/blob/master/src/clj/cloju... shows pretty clearly the correspondence between the original form and the rewritten form in the definition of `when`. `defn`, which is so foundational to idiomatic Clojure that it's easy to mistake it for a built-in, is a much more complicated example.

  • circle

    The compiler is available for download. Get it!

    I wonder if we'll end up with something like https://www.circle-lang.org/ which lets you use pretty much the entire C++ runtime language at compile time.

  • SonarQube

    Static code analysis for 29 languages.. Your projects are multi-language. So is SonarQube analysis. Find Bugs, Vulnerabilities, Security Hotspots, and Code Smells so you can release quality code every time. Get started analyzing your projects today for free.

  • oh

    A new Unix shell.

  • whirlisp

    A whirlwind Lisp adventure

    I wrote this to try and show how that could happen in a realistic enough way to make sense:


  • excoptional

    A fully typed, zero-dependency implementation of the functional programming Option object for JavaScript and TypeScript

  • cafe-latte

    An implementation of Common Lisp dynamic variables, control flow operators, and condition system in plain Java.

    Lack of macros makes nothing impossible, but also makes many things harder. I think of them as code generators, tiny compilers on a micro scale; they are invoked by the proper compiler during compilation phase, as opposed to runtime, allowing you to inject code that you'd otherwise need to inline by hand.

    It's possible to write pretty complex things like control flow abstractions using just structures and functions/methods, e.g. a CL-esque condition system in Java which only uses classes, static methods, and Java lambdas[0] for its syntax. Possible, but also IMO ugly when compared to the CL counterpart, because the low-level but irrelevant details (such as instantiation via `new` or generics) are still presented to the programmer.

    [0] https://github.com/phoe/cafe-latte

  • sicp

    HTML5/EPUB3 version of SICP

    I'll recommend the videos from the 1980s and this version of the text, which is set nicely and has working footnotes.

    Videos: https://ocw.mit.edu/courses/electrical-engineering-and-compu...

    Text: https://github.com/sarabander/sicp (links to epub and html versions at the top of the README)

  • Scout APM

    Less time debugging, more time building. Scout APM allows you to find and fix performance issues with no hassle. Now with error monitoring and external services monitoring, Scout is a developer's best friend when it comes to application development.

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