logo
Kurashizu Blogwhere ideas flow
  • Home
  • News
  • Blog
  • About
  • Home
  • News
  • Blog
  • About

© 2026 Kurashizu. All rights reserved.

Admin·New Post·Service Status
Powered by Cloudflare·01.11.26
← Back to news

A Road to Lisp: Which Lisp

Original article
scotto.me|99 points|55 comments|by silcoon|Jul 17, 2026

Navigating the Lisp Landscape: Choosing Your Path

Published: July 17, 2026

Typically, programming languages follow a linear evolutionary path. Whether it is Python, Java, JavaScript, or C++, these languages generally exist as a single entity. While they may have various versions, standards, or different implementations, the core identity of the language remains constant.

The Implementation vs. Dialect Distinction

To understand the difference, consider how traditional languages are deployed:

LanguageCommon Implementations/Compilers
C / C++GCC, Clang
PythonCPython, PyPy
JavaScriptV8 (Chrome), SpiderMonkey (Firefox)
JavaJVM, GraalVM

In these cases, the language is the same regardless of the tool used to run it. Lisp, however, is different. A glance at Wikipedia reveals over 20 distinct versions dialects. While they share a foundational syntax, they diverge significantly in their:

  • Standard libraries
  • Language capabilities
  • Semantic rules
  • Available operators

The Beginner's Dilemma

A common point of anxiety for those entering the Lisp world is: "Which dialect should I learn first?"

The Short Answer: While your choice does matter, it is not as critical as it seems. Once you master the fundamentals of one Lisp dialect, transitioning to another is a relatively straightforward process.

If you are new to this, some of the following technical details might seem alien. However, for many, these are the very features that make the Lisp ecosystem so captivating.


Deep Dive: Common Lisp (CL)

Common Lisp is the "heavyweight" of the family—the most mature and all-encompassing dialect available. It is often viewed as the old-school choice because it was formalized in 1994 via an ANSI specification.

Performance and Implementation

Because it is standardized, various implementations exist for different needs. The most prominent is SBCL (Steel Bank Common Lisp), which translates code directly into native machine instructions.

  • Pros: Extremely fast; open-source; modern hardware support.
  • Cons: Because SBCL employs aggressive optimization, compilation is slightly slower than in other Lisps.
  • Result: Well-optimized CL code can rival the performance of C or Rust.

The mathematical foundation of these concepts traces back to the λ\lambdaλ (lambda) calculus developed by Alonzo Church.

The "Comprehensive" Nature of CL

When we call CL "comprehensive," we mean it provides an immense array of built-in tools. You can control the language's own execution from within the code using functions such as:

COMPILE, LOAD, EVAL, and COMPILE-FILE

You can even use DISASSEMBLE to peek at the actual machine code the compiler generated for your functions.

The Power of the Condition System

One of the most sophisticated features of Common Lisp is its condition and restart system. Unlike standard try-catch blocks, this allows for a dynamic debugging experience:

Because the REPL (Read-Eval-Print Loop) is so tightly integrated, you can connect to a failing process on a remote server and fix the issue in real-time without restarting the application.

Paradigms and Typing

Common Lisp is a polyglot of paradigms. It supports:

  1. Functional Programming
  2. Imperative Programming
  3. Metaprogramming
  4. Object-Oriented Programming (OOP)

Its OOP implementation, CLOS (Common Lisp Object System), is far more flexible than the systems found in Java or C++, specifically due to its support for generic functions and multiple dispatch.

Regarding types, CL is dynamically typed, yet it possesses a sophisticated type system that allows for optional type declarations to aid the compiler.

Stability and Longevity

The 1994 ANSI standard is still the gold standard today. This creates a level of backward compatibility that is almost unheard of in the modern era.

  • Example: Code from Peter Norvig’s PAIP (published in 1991) largely runs on modern systems without modification.
  • Contrast: Unlike Python or Ruby, where version jumps often break old libraries, CL libraries from years ago typically remain functional.

The Trade-offs

Common Lisp isn't perfect. It lacks some "modern" syntactic sugar, such as:

  • Concise literals for complex data structures.
  • Built-in general-purpose pattern matching.
  • Lazy sequences.
  • Persistent immutable collections.

Community and Real-World Use

CL was born in the 1980s by merging several dialects to ensure a smooth transition for existing programmers. Today, it lacks a corporate benefactor; it is kept alive by a small, dedicated community of volunteers. This can make finding documentation a challenge, as tutorials tend to be either too basic or extremely advanced.

Despite this, it is used in high-stakes environments:

  • Quantum Computing: Used by Rigetti Computing.
  • Language Processing: Powered the core grammar service at Grammarly.
  • Travel: Powers Google Flight Search.
  • Gaming: The open-source game Kandria (available on Steam) is written entirely in CL.

Fun Fact: The original version of Hacker News was built using a custom Lisp dialect created by Paul Graham.

Your Lisp Starting Checklist

  • Choose a dialect (Common Lisp is a great start).
  • Install an implementation (e.g., SBCL).
  • Set up a REPL environment.
  • Write your first (defun ...) function.
  • Explore the λ\lambdaλ calculus roots.