Remix.run Logo
Geof25 an hour ago

I often hear about lisp but never actually figured out what tooling you need Is it interpreted or compiled language? Why should I use it instead of any other languages?

stackghost 39 minutes ago | parent [-]

"Lisp" refers to several different languages in the same family, which contributes to the confusion.

Perhaps the default choice is Common Lisp which itself is specified in an ANSI standard and has several competing implementations. Some are compiled, some are interpreted.

Arguably the best is SBCL, which has a mature compiler and garbage collection. If you lean on implementation-specific features you can produce extremely fast code that approaches the performance of C in some benchmarks, but idiomatic and portable lisp is slower in practice.

>Why should I use it instead of any other languages?

The killer feature used to be the REPL. You can write the application function by function, and test the functions, data structures, or classes you write in the REPL as you're actively building the app.

Nowadays with LLMs writing all the code, I honestly don't see much reason to reach for lisp. Agents don't require a REPL, and other languages have vastly superior library support.

guenthert 2 minutes ago | parent | next [-]

> The killer feature used to be the REPL.

The killer (hah!) feature is arguably its homoiconicity, allowing to modify the language easily within itself ("macros").

> Nowadays with LLMs writing all the code

Oh, you came all the way from the future and that's what you bring us?

red_admiral 29 minutes ago | parent | prev [-]

> You can write the application function by function ...

and then use JUnit or TestNG in Java, or similar features in other languages. Which you can automatically run, including showing code coverage, both with a button in your IDE and as part of the CI/CD process when you commit.

Zak 17 minutes ago | parent [-]

Unit testing doesn't provide the level of interactivity a REPL does. A REPL lets you see the output of parts of an unfinished function based on the running program's state.

If you've already thought out the whole program before you start writing it, that may not be as valuable. In my experience, software often isn't that way and the ease of exploration a REPL and long-running process provide are unmatched.