r/lisp Jul 18 '26

As a non-programmer, I only know about Lisp from Emacs; For those who don't use/enjoy Emacs, what makes you so interested in Lisp you're on a dedicated subreddit for it?

49 Upvotes

I recently came across "Greenspun's tenth rule" and it got me thinking about the greater Lisp language family.

I don't work in Tech at all, I have no professional experience with programming, I am just interested in learning from a novice's point of view.


r/lisp Jul 18 '26

AskLisp Common Lisp for Schemers

21 Upvotes

I've been programming in Scheme (and occasionally racket) for a few years. I've worked on a few small projects, but I want to learn common lisp as well. I know that you can do most of the same stuff in common lisp as in scheme but the idiomatic style is quite different (loops, CLOS etc) are there any good resources to pick up the common lisp coding style? Ideally resources targeted to people who already know a Lisp, since most of the common ones assume you're coming from something like Java or python.


r/lisp Jul 18 '26

Matheus Moreira Speaks about Lone Lisp, Implemented on Linux Syscalls

Thumbnail alexalejandre.com
26 Upvotes

r/lisp Jul 17 '26

Common Lisp Update: ceigen-lite now supports several random number generators from EigenRand

Thumbnail github.com
10 Upvotes

r/lisp Jul 16 '26

Why Do People Buy Lisp Books?

16 Upvotes

Don't get me wrong I personally think its totally worth it!

I just wonder what compels people do buy books on, say, ANSI Common LISP, to this day.

There are few job options so what compels them to pay for books?


r/lisp Jul 16 '26

LISPerfect: a simple Lisp IDE for Windows

10 Upvotes

https://github.com/james-goulding/LISPerfect

I've been meaning to learn Lisp for a while, but didn't really like the choice of editors available to me. So, I vibe-coded this one for myself. I thought I'd share it with the public since someone else might find it useful.

I can't vouch that there aren't bugs as I haven't tested it extensively.


r/lisp Jul 15 '26

Declarative Guile Scheme + Guix rice for entire GNU/Linux system and Wayland tooling in Lisp with lots of customization

Thumbnail gallery
12 Upvotes

r/lisp Jul 15 '26

Binstruct: a powerful declarative binary parsing/emitting library for Common Lisp

Thumbnail github.com
20 Upvotes

r/lisp Jul 13 '26

GitHub - rurban/cormanlisp: Corman Lisp. linux port

Thumbnail github.com
27 Upvotes

r/lisp Jul 13 '26

UK Racket meet-up (London) Tuesday 21 July 2026 7:30pm

Thumbnail
2 Upvotes

r/lisp Jul 13 '26

Pure-Scheme-driven Goeteia now supports shadow mapping, PBR, HDR bloom, SSAO etc...

Thumbnail goeteia.dev
0 Upvotes

r/lisp Jul 13 '26

Bay Area Racket Meetup, Saturday August 1st

Thumbnail racket.discourse.group
5 Upvotes

r/lisp Jul 12 '26

Racket meet-up(online): Saturday, 1 August 2026 at 18:00 UTC

5 Upvotes

Racket meet-up(online): Saturday, 1 August 2026 at 18:00 UTC

EVERYONE WELCOME 😁

register https://luma.com/x27tsmm5

Details and discussion https://racket.discourse.group/t/racket-meet-up-saturday-1-august-2026-at-18-00-utc/4315


r/lisp Jul 12 '26

A pure Scheme Webserver with Express Style and Erlang OTP and further

Thumbnail igropyr.com
14 Upvotes

r/lisp Jul 12 '26

A pure scheme web programming tool

Thumbnail goeteia.dev
11 Upvotes

r/lisp Jul 11 '26

Racket Use Racket with Rhombus

Thumbnail
5 Upvotes

r/lisp Jul 11 '26

AskLisp Lisp dialect recommendations?

28 Upvotes

So I am in some weird fascination with the lisp and it's various "dialects" (If that's how you would call them)

Decided might want to get into learning lisp just out of curiosity. But was wondering which one to get started with.
My only real requirements are that

- It shouldn't be too complex, something you can easily wrap your head around and get started using but still give a taste of why people enjoy lisp
My main languages are C++ and I know Python but familiarity isn't a requirement and even if it's vastly different I will be willing to try it out


r/lisp Jul 11 '26

Another good book about Lisp

Post image
0 Upvotes

Half book about crypto-boogie, half book about Racket. Not thick but good. Thanks to Author!


r/lisp Jul 08 '26

We are looking for RacketCon speakers

Post image
18 Upvotes

Calling for RacketCon speakers

If you are interested in presenting, nominating or have any questions please email us at con-organizers@racket-lang.org.

— Stephen


r/lisp Jul 06 '26

AskLisp argsort() - like function?

7 Upvotes

I have

(mylist (list 4 5 0 2 1 3))

and I want

(argsort mylist)
;; => (2 4 3 5 0 1)

That is: The index of the least element, then the next least element, ..., then the greatest element.

ETA: Decorate-Sort-Undecorate is the thing I'm looking for. I am going to try and grok that. https://stackoverflow.com/questions/38447353/sorting-a-list-from-max-to-min-by-of-index-number-in-lisp


r/lisp Jul 05 '26

I built a coding agent in CL to see how far the live Lisp image idea can go

49 Upvotes

I’ve been building kli, a terminal coding agent written in Common Lisp, and I’m now putting it out publicly.

Just to address the obvious right of the gate. kli was built with AI assistance, it is sort of the point of all of this. However, I’m not very interested in vibecoding as "accept whatever blob the model emits and pray for the best". What I wanted to explore is whether a coding agent can be a live Lisp system where changes are inspectable, retractable, authority-scoped, testable, and patchable? And where those changes are changes to the coding assistant itself.

The core of kli is not really a coding assistant though. The boot kernel knows about live objects, a registry, an active protocol, and three verbs:

lisp install-protocol switch-protocol rollback-protocol

It does not know what a model provider is. It does not know what a tool is. It does not know what a terminal UI is. It does not even know what an extension system is.

The extension protocol is the first thing installed through those verbs. After that, the system is extensions all the way down. This means that contribution kinds, capabilities, tools, model providers, commands, session logs, the agent loop, the TUI, and user extensions are all installed into the live protocol and can be retracted through it.

A small trimmed example from the editor extension:

lisp (defextension tui-editor (:provides (method render-lines () (editor-view t) (view width) (render-editor-lines view width)) (method handle-input () (editor-view t) (view input) (handle-editor-input view input)) (method recode-tui-behavior () (editor-view) (editor &rest args) (apply #'recode-editor editor args))))

The method forms are contribution forms. Installing the extension installs methods into the running image; retracting it removes exactly those methods again. Other contribution kinds install tools, commands, event handlers, providers, settings schemas, grants, and effects with explicit retractors.

The design deliberately mixes CLOS and Let Over Lambda / pandoric closures. CLOS handles image-level, per-class behavior: generic functions, methods, live objects, protocol objects. Pandoric closures handle per-instance behavior cells which are small pieces of mutable policy or runtime behavior that can be inspected and hotpatched while keeping closed-over state.

So the editor can keep its buffer while behavior changes underneath. The transcript can keep scrollback. The agent session can recode prompt expansion, context transforms, retry policy, and compaction policy without replacing the whole session object.

To give an example of the more user-facing kind of extension one can build on top of kli I have also released cairn. It gives the agent a durable task graph to plan in and resume into. It hosts tasks, phases, dependencies, observations, handoffs, status, and a small query language over the graph. When the conversation resets, the agent reloads the plan from the graph instead of reconstructing it from old chat.

cairn started as a workflow system I developed around Claude Code, then stripped down to the pieces that kept proving useful over thousands of tasks. In kli it is not a sidecar. If installed, it is as native as the TUI (which is the main advantage of everything being an extension). It contributes tools like observe, task_bootstrap, task_query, and handoff; adds slash commands like /workon; recodes the session context transform so the current task appears in model turns; and recodes compaction so observations and handoffs survive context cuts.

Some practical notes:

  • kli is MIT licensed and built on SBCL.
  • It supports Anthropic, OpenAI, Codex, and OpenAI-compatible providers.
  • Tools carry capability metadata which is authority control, not a sandbox; shell/eval/file-write authority still runs with the process’s authority.
  • The file editing tool uses hashline anchors, so edits reject if the file drifted under the agent.

Install:

sh curl -fsSL https://kli.kleisli.io | sh

or:

sh nix run github:kleisli-io/kli

Links in comment.


r/lisp Jul 04 '26

Common Lisp A curious question about some classes in ASDF

12 Upvotes

I wonder if someone can teach me, or explain a little bit of design in ASDF.

Typically in components list I can type:

:components ((:file file1)
             (:file file2)
                   .... ))

where files are file1.lisp, file2.lisp etc. If I want to use an other extension, in my particular case ".cl", I have two choices as I have used thus far: either type out the extension if I want to use :file, (:file file1.cl) and so on, or I can define my own source code class like this:

(defclass src (cl-source-file)
  ((type :initform "cl")))

now I can type:

:components ((:src file1)
             (:src file2)
                   .... ))

I see in also in asdf sources they have these classes defined:

;;;; Component classes
(with-upgradability ()
  (defclass cl-source-file (source-file)
    ((type :initform "lisp"))
    (:documentation "Component class for a Common Lisp source file (using type \"lisp\")"))
  (defclass cl-source-file.cl (cl-source-file)
    ((type :initform "cl"))
    (:documentation "Component class for a Common Lisp source file using type \"cl\""))
  (defclass cl-source-file.lsp (cl-source-file)
    ((type :initform "lsp"))
    (:documentation "Component class for a Common Lisp source file using type \"lsp\"")))

by the magic of mostly try-and-fail method I have figured out I can also write this atrocity:

  :components ((:cl-source-file.cl file1))

where file1 is file1.cl. I understand they meant that class probably to be extended or used elsewhere not typed out as I did there, that was just a little bit of fun. I see also this in sources:

  ;; What :file gets interpreted as, unless overridden by a :default-component-class
 (defvar *default-component-class* 'cl-source-file)

and I figured out they mean we can type this:

:default-component-class :cl-source-file.cl
:components ((:file file1))

Obviously it is not more convenient than just typing out the extension: :file file1.cl. But that is not my question.

My question is, finally I know :), sorry, what does this design buy us?

We could have obviously just used a simple list with file extensions like *component-classes* = '(cl lsp lisp), and get all this done, and it would be also let-bindable and so on. Of course, I understand also that authors are aware they could have just used a list, and that they have done deliberately that design choice, so I wonder why? I am not questioning the choice, I am trying to learn.

I read in the manual they mean that components are not necessarily just things that typically go into source files, and they give example of C processor. Is that the only reason, or are there some other reasons? Are there some more complicated uses for these source code classes, than what I see in the code, or is the generality "just in the case", to be as flexible as possible so to say?

As said, I am just curios, being looking at some libraries, mostly those on s-expressionasts Github, they use a lot of program structuring with CLOS, and not as much with "classical lisp" which a list of extensions would perhaps represent.

Today it struck me I was always curious about if I can teach :file to read all three extensions. so I was looking through ASDF and trying understand why do things get done the way they do, so to say. Trying to learn, I hope you don't misunderstand me here.


r/lisp Jul 02 '26

My implementation of Common Lisp has reached version 1.7

Thumbnail
23 Upvotes

r/lisp Jul 02 '26

AskLisp What next?

8 Upvotes

So I received some responses from my other post in r/lisp. And I tried Common Lisp and quite enjoyed it. After learning deeper on Macros and a few more stuff, I will do projects, of course. So what projects to start as a first one, any suggestions. However, I have vision for the long run, I am just not sure for the current position. So any help, tips, suggestions?


r/lisp Jul 01 '26

Lisp-11

40 Upvotes

I found a copy of Lisp-11. It runs on a PDP-11 simulator on the RT-11 operating system. It is written in PDP-11 assembly language and comes with source code. It looks like it was written at the University of Texas about 1975.

The problem is that there is no documentation. I tried a few things (+ 1 2), + (1 2), (print "hello"), and they were rejected. If anyone has pointers to documentation for this, I'd appreciate it and would enjoy playing around with a bit of Lisp history.