Lisp/Scheme Links

Here are some Lisp and Scheme links.

  • Scheme
  • Racket:
  • Common Lisp:
    • The Common Lisp Hyperspec:
    • Common Lisp CommunitySpec (CLCS): A rendition of the Common Lisp ANSI Specification draft, with Github repo. This one does not have an index.
    • There is also the Nova Spec. The pages have a copyright date of 2023, but I cannot find any page for the author, so I do not know if this is an active project.
    • Implementations:
      • Armed Bear – Runs on the JVM.
      • clasp – Made to interact with C and C++ libraries
      • CLISP – No releases since 2010, but still in development. 2023-02-22: It looks like it moved to Gitlab.
      • Clozure – Made by a company named Clozure. Similar to Clojure, Clozure made Clozure with closures to give you closure. Buffalo buffalo Buffalo buffalo buffalo buffalo Buffalo buffalo. So you have that.
      • Corman – For Windows
      • Embeddable Common-Lisp – can be used by itself, or as a library inside a C program. Perhaps a good way to avoid falling victim to Greenspun’s tenth rule.
      • ManKai Common Lisp (MKCL) – site here, Github here.
      • mocl – Common Lisp for mobile apps (as of 2023-02-09, this appears to be a dead link).
      • SICL – A fresh implementation of Common Lisp .
      • Steel Bank – Generally regarded as the go-to implementation.
      • Portacle – An all-in-one environment. Per this Reddit thread started in May, 2022, it appears the author is no longer maintaining it.
    • There is a library manager called Quicklisp. There is a blog with updates at this link. Source repo here. The projects are listed in a repo called quicklisp-projects; the “projects” directory has sub-directories with text files containing the URLs for each project.
    • ASDF: Another System Definition Facility. It works with Quicklisp. At this time I do not know much more than that.
    • There is also Ultralisp (site here, Github repo here). I am not clear how this relates to Quicklisp or ASDF.
    • Here is the awsome-cl repo and the Awesome Common Lisp website. The repo is also at a site called NotABug; it is a self-hosted Git repo, so it might not be as responsive.
    • The Emacs package for working with Common Lisp is called SLIME: The Superior Lisp Interaction Mode for Emacs: Site here, documentation here, Github repo here.
    • A page on Read The Docs for Common Lisp Libraries (with Github repo here).
      It has the following defacto standard libraries:
      asdf, alexandria, bordeaux-threads, cl-ppcre, cl-who, hunchentoot, fiveam, iterate, local-time, postmodern, quicklisp, usocket, utilities
      It also covers a couple that are not defacto standards: numcl, unix-opts
    • You can find out if a common library runs on your CL implementation at Portability.cl.
    • I have not looked at his videos, but there is a guy on YouTube named “Baggers” who makes videos on Common Lisp. He has a few playlists: One called Little Bits of Lisp with random stuff about Common Lisp, and one called Pushing Pixels With Lisp, which I think is about GPUs and making a game with Common Lisp. Viewing these are on my ever-growing to-do list.
    • Emacs For Common Lisp (Emacs4CL): To quote the repo: “This repository provides a tiny .emacs file to set up Emacs quickly for Common Lisp programming.”
    • There are quite a few sub-reddits dedicated to Lisp variants and tools. Here are a few: Lisp, Common Lisp; there is a sub-reddit for Emacs, but not a separate one for Emacs Lisp.
    • One book that is popular for learning Common Lisp is Practical Common Lisp. The section on setting up Common Lisp is out of date. You can get information on setting up Common Lisp from the Common Lisp Cookbook.
  • Other variants of Lisp:
    • There is one, my friend, that they call Clojure.
    • The road to Lisp was long, but I ran it, Janet. The core functions are here.
    • There is an offshoot of Clojure called Jank (souce repo here, main site here). Since it runs on a native VM, it might displace Clojure. On the other hand, if all the Jank jobs wind up being just Javascript in disguise (as it seems most Clojure jobs are really Clojurescript jobs), then this will be a pointless experiment.
    • Fennel. It looks like this one runs on and compiles to another langugae called Lua. For me, the depedency on Lua makes this a non-starter. If I want to use something, don’t make me learn a second thing first.
    • PicoLisp
    • uLisp – Lisp for microcontrollers
  • I do not consider JavaScript a variant of Lisp. Do not assume that my interest in Lisp translates to an interest in JavaScript. If anything, I think a knowledge of Lisp would lead to an extreme distaste and dislike of JavaScript. If you want to use the smart language, why use the stupid one?

Note 1: Note to members of all standardization committees: Make your specs available as HTML. I don’t want to read a PDF online; putting anything other than HTML on the web is just stupid. I have no desire to “transform” LaTEX. I once had a not-very-fun job transforming LaTEX. I didn’t like it when I got paid to do it, so I am not doing it now.

This post was created in Emacs with Org Mode and Love. You’re welcome. And stop looking at your stupid phone all the time.

Image from Aurora Consurgens, a 15th-century manuscript housed at Central Library of Zurich (Wikipedia page here). Image from e-Codices, assumed to be allowed under CC BY-NC 4.0.