How to Understand and Use Common Lisp

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

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

    The Common Lisp Cookbook

    Seems like a nice book. I like that it gets into the fundamental stuff like setq, cond, let, list, cons, etc. quickly enough in the 3rd chapter. In my opinion, the sooner these concepts are introduced in a book, the better.

    I have also found from my first hand experience is that a programming language is best learnt by diving straight into it and writing small software that you care about with it.

    When I began learning serious computer programming two decades ago, it was pretty much necessary to buy a good book and read as much of the book as possible chapter by chapter. For example, the first programming language book that I read was K&R and I read that cover to cover. It was quite formative in my journey of computer programming. It took me a long time to start writing useful software with the knowledge but when I did begin writing software, I had a pretty thorough knowledge of C.

    I have come to realise that these days, it is not uncommon for aspiring programmers to jump straight into developing a software with a programming language determined by requirements. Not everyone had the time to read a book cover to cover. In fact, I myself learnt Python by jumping straight into developing tools that I needed for myself with it.

    If someone wants to similarly get started developing tools with Common Lisp these days, I would suggest https://lispcookbook.github.io/cl-cookbook/ . It is a great resource to look up common recipes for common tasks.

  • awesome-cl

    A curated list of awesome Common Lisp frameworks, libraries and other shiny stuff.

    It's a good book!

    Modern companions would be:

    - the Cookbook: https://lispcookbook.github.io/cl-cookbook/ (check out the editors section: Atom/Pulsar, VSCode, Sublime, Jetbrains, Lem...)

    - https://github.com/CodyReichert/awesome-cl to find libraries

    Also:

    - https://stevelosh.com/blog/2018/08/a-road-to-common-lisp/

    - https://news.ycombinator.com/item?id=34321090 2022 in review

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

  • awesome-lisp-companies

    Awesome Lisp Companies

    yes

    https://github.com/azzamsa/awesome-lisp-companies

    http://lisp-lang.org/success/

    industrial theorem prover, design of Intel chips, quantum compilers...

    and little me, being more productive and having more fun than with python to deploy boring tools (read a DB, format the data, send to FTP servers, show a web interface...).

  • clog

    CLOG - The Common Lisp Omnificent GUI

    I haven't used Clojure professionally in 10 years so with a grain of salt here are my thoughts as only one other person answered...

    CL over Clojure: it's the OG Lisp that the creator of Clojure used and wanted to continue using but faced too much resistance from management afraid of anything not-Java/not-Oracle, or not-CLR/not-Microsoft, etc. Clojure shipped originally as "just another jar" so devs could "sneak" it in. If you don't have such a management restriction, why Clojure? If you want to integrate CL with the JVM, you can use the ABCL implementation, there's also something from one of the proprietary Lisps. Some useful CL features that are nice in this domain: conditions and restarts mentioned in a sibling comment (very nice to help interactively develop/debug e.g. a selenium webdriver test), ability to easily compile an exe (perhaps useful for microservices, or just to keep your deployment environment clean and not having to care about Lisp), and ability to easily ship with an open local socket allowing you to SSH in (or SSH port forward) and debug/fix/poke around in production (JVM of course lets you attach debuggers to a running process, even certain billion+ dollar companies will have supervised/limited prod debugging sessions for various hairy cases, but it's not as interactive). You should never hear CL advocates claim you can't scale to large teams/groups of engineers or large multi-million-lines sized projects, though you might oddly hear Clojure advocates sometimes claim you can't (and shouldn't) scale to such large projects -- large groups of engineers are a non-issue for them as well though, the challenge is in hiring, not in the language somehow making it impossible to modularize and keep people from stepping on each other.

    Clojure over CL: its integration with the JVM is nicer than ABCL's, so if you do actually want a lot of the great world of Java stuff, it's easier to get at. Database integration libraries are better. Access to libs (Clojure or Java) is via Maven, so it's a larger ecosystem with more self-integrating components (especially around monitoring/metrics) than what's available for Lisp via Quicklisp. Clojure is very opinionated, much of it quite tasteful, and that gives the whole ecosystem a certain consistency. (You can have immutable data structures in CL, you can if you want use [] for literal vectors and make them syntactically important e.g. in let bindings, but not everyone will be on board.) Even though its popularity seems to have stopped growing, at least at the same rate as e.g. Go which it was keeping pace with for a while, it's still popular enough with a bigger community; as a proxy measure there are multiple conferences around the world and good talks at adjacent conferences, whereas Lisp mostly just has one conference in Europe per year and only occasional branching outside of that.

    If you're doing a client-side-heavy webapp, ClojureScript is still amazing, CL's answers there aren't very compelling with the exception of CLOG (https://github.com/rabbibotton/clog) which takes an entirely different direction than the usual idea of translating/running Lisp on top of JavaScript and its popular frameworks.

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