Skip to content(if available)orjump to list(if available)

Customizing Lisp REPLs

Customizing Lisp REPLs

13 comments

·August 18, 2025

spauldo

That's a neat idea. But I'm curious how many people actually use native REPLs for anything beyond trivial evaluation.

I'll use a Guile or SBCL REPL for some quick math (assuming it's something that's not trivial in dc) or to test out a quick idea, but I rarely send more than one to three forms before closing it. That's only if I don't have Emacs open where I can just do it in the scratch buffer. Anything that needs more than a couple defuns goes into SLIME or guiser.

So, people who use native REPLs, what do you do with them?

cosmos0072

> So, people who use native REPLs, what do you do with them?

In my case, I use my interactive shell https://github.com/cosmos72/schemesh every day as login shell.

You can look at it as heavily customized Scheme REPL, where everything not inside parentheses is parsed and executed as shell syntax, and everything inside parentheses is parsed and executed as Scheme syntax.

Having arithmetic and procedure definition within the login shell definitely feels liberating, at least to me

cess11

I've used the Picolisp REPL like that, though not as a login shell proper, but as the shell where I actually do stuff. Mainly due to the ease with which it integrates with the below shell through 'in, 'out and 'fork.

gus_massa

From a few old post by Paul Graham, he used to run Hacker News in the REPL of Arc in the REPL of Racket. So it was posible to make tweaks on the moment, like changing the title to "Innocuous News" as a joke for a few hours. Also, he once changed the parent of one comment and created a cycle in the DAG and that cashed the site for a while. I can't find the article now.

Anyway, a few years ago dang changed the backend to SBCL that is more REPL friendly, so I guess this comment is showed using the REPL of Arc in the REPL of SBCL.

taeric

I think this is saying different things? The question is how much of the direct interaction is with the REPL, not if a REPL is available to use.

skydhash

I’ve used the Node REPL to check some asumption about some library. Also the python REPL in Emacs when I was writing some logic heavy script.

nils-m-holm

Loading programs, testing individual functions, examining data. I usually have two windows/consoles open: one for writing code, one for loading and testing.

lycopodiopsida

If I write lisp, a REPL is always running. Used for testing functions with input and debugging.

monsieurbanana

The person you're answering is also using a REPL while coding, just not accessing it directly (= manually writing in the REPL stdin)

Instead he interacts with it via his editor's tooling, where you are in a normal file, and use a shortcut that will send a sexp/function/region/etc into the running repl and display the result.

So just to be clear you are using the repl directly?

merlincorey

The article mentions SBCL which is a well regarded open source Common Lisp implementation.

Common Lisp invented REPLs and the way most people use it now answers your question with "both".

A REPL usually runs locally in a subprocess or remotely through a REPL server and then your editor talks to that running Lisp Image where you can send code for compilation and recompilation while the image is running and also interact with it directly through the REPL which includes the debugger.

The GP you are referencing uses the common SLIME[0] package for anything of consequence which works exactly as described above.

[0] https://slime.common-lisp.dev/

eimrine

What a lovely blog!