I don't know the list of languages included in the book, but anyone interested should try out:

   - J: https://www.jsoftware.com/#/ you'll learn arbitrary dimension arrays, verb composition and more
   - Lisp: I don't know the right Lisp to recommend. Macros stand out as something to learn
   - Forth: I don't know the right Forth to recommend. The stack is an interesting metaphor
   - A constraint-based language: maybe https://www.minizinc.org constraints are super interesting
Those are all practical languages -- none is esoteric just for the sake of strangeness.

There are more of course.

I don't think those languages would be "esoteric" in the meaning of the article (purposefully designed to be different for the sake of being different) but they are more like domain-specific languages designed to fit certain use-cases extremely well, and in doing so, depart from the traditional imperative model.

The right Forth is the one you write.

In your Forth.

And then you write a custom outer interpreter to create a DSL designed to write FORTH inner interpreters.

Racket is the canonical LISP (well, Scheme) to recommend to new users.

https://racket-lang.org/

Yeah, as much as I love Common Lisp and prefer it to Scheme (despite learning Scheme first), the fact you can read the entirety of R7RS small in a single afternoon is, in my opinion, quite important in making the language approachable to beginners.

If you wish, you can install a package to run R7RS small program in Racket. Just run in the commend line

  raco pkg install r7rs
or search r7rs in the package manager inside DrRacket.

It's not maintained by the core developers, but it pass all the test suit and if you ever find a bug and post an issue in github or in the discourse group, it will be fixed very soon.

https://pkgs.racket-lang.org/package/r7rs

https://github.com/lexi-lambda/racket-r7rs

more info: https://github.com/lassik/racket-r7rs-example

Lisp is not esoteric. Emacs, Guix, AutoCad...

I would add an SMT solver like Z3. It can solve problems when they are translated into first order logic.

Good choices. Add APL, Prolog, and Rebol.

Hmmm. GP listed three languages which are not esoteric, and you've patted them on the back and shared three more which are not esoteric. Oops.

Esoteric language =/= any non-mainstream language.

Here's the definition from the esoteric programming language wiki, which is a lovely resource for anyone interested https://esolangs.org/wiki/Esoteric_programming_language:

> An esoteric programming language is a computer programming language designed to experiment with weird ideas, to be hard to program in, or as a joke, rather than for practical use.

Forth would be neat on an RPN calculator.

/random