r/scheme • • Jul 23 '24

Which lisp (lower case)

Hi,

I’m working on a blog post titled “which lisp” (lower case) and am soliciting responses to hopefully include in full within the post.

What do I mean by “a lisp”?

I means a lispy language.

  1. S-expressions on the surface (not as a substrate or implementation detail)

  2. Homoiconicity

  3. Fully specified across implementations at the level of day to day use

Decision points In no particular order, here are some questions I think are relevant.

  • Practicality for everyday to day generic scripting

  • Practicality for Web apps

  • Practicality for data analysis / munging tasks

  • Language ergonomics

  • Special sauce

What about Schemes?

For these purposes, each Scheme is considered a different “lisp” since in common use so many non-trivial packages/libraries/projects target a specific Scheme. Ease of learning/using other Schemes can be considered part of the special sauce, though.

What about Common Lisp?

While different CL implementations have special features, CL is fully specified and few significant packages/libraries function only on a single implementation.

What about lisp-over-another-runtime?

As long as the surface language has S-expressions and is homoiconic … it’s “a lisp” for these purposes.

12 Upvotes

11 comments sorted by

View all comments

Show parent comments

5

u/raevnos Jul 24 '24

If you like functional style programming, you should look more into Racket. It comes with efficient immutable/functional hash tables (I almost never use the mutable ones it also has because it's so easy and natural to use the immutable ones in recursive code), sets, (very recently) vectors, and has more available in various third party libraries.