From just reading the TOC, and the first bit, this looks great. Like the author, I have been into Common Lisp “forever.” I do sometimes feel conflicted when I can get something done in Python much faster because I can find a library that solves the problem I am working on. Probably my most honest advice to people is that Common Lisp is very good for research programming, but for many use cases other programming languages are better.
This is why I’ve found myself doing Clojure for everything. Clojure has its own pretty-ok ecosystem, but also benefits from the Java ecosystem, while still giving me some lispey goodness.
Granted, sometimes the mixing of paradigms can kind of clash, and that’s its own can of worms, but at least I never get that “ugh I could have done this with a library in <language X>”
When I reference Java from Clojure, I usually wind up with a thin layer of wrappers around the part of the library I need to make the main codebase feel more properly Lispy. It isn't perfect with the different mental models between the languages, but it helps.
Yeah, and I think wrapper functions are fine and normal.
The part that I do find annoying is when I have to break out macros to make my wrapper usable. When I was using the Java bindings for Apache Spark a few years ago, I felt like I was constantly reaching for macros to do some clever stuff, which is no fun.
Yeah I haven't found any project I've wanted to implement in CL. I usually end up using Python or Go at that level of abstraction. If I want lower-level, C or Rust. However, I interact with Lisp almost daily through Emacs. And I enjoy it quite a bit. Configuring my editor through Lisp is unusually satisfying, and feels sleek.
Take a look at the CL libraries PY4CL, PY4CL2, and CL4PY. I use the first one for some things. It can be useful to bridge over to Python for something and come back with the answer.
> ...because I can find a library that solves the problem I am working on.
I couldn't find it, but is there a "Rosetta Stone" of language ecosystems, where in a "libraries" section it lists Python/Go/Rust/Ruby/Perl/Lisp/etc. library near-equivalents?