upvote
> The biggest downside of Racket is that you can't build up your environment incrementally the way you can with Common Lisp/Sly. When you change anything in your source you reload REPL state from scratch.

I don’t quite understand… I’m using Racket in emacs/SLIME and I can eval-last-sexp, regions, etc.

reply
Ah, I'm using racketmode which doesn't support live state buildup (and the builtin GUI doesn't either). What exactly is your setup? SLIME only has a Common Lisp backend, it doesn't support Racket to my knowledge.

EDIT: ok with geiser and geiser-racket incremental state buildup works really well. I rescind my objection!

reply
I think that should work in racket-mode as well. You can easily send individual sexps to the repl and add to the live state. However, one thing that CL does that Racket doesn't do (afaik) is when you change a data type (e.g. alter a struct), it automatically ensures live code uses the new types. In Racket by contrast I have to either carefully go through all affected forms and send them to the repl, or send the whole buffer to the repl. This does make the whole experience feel more static than in CL.
reply
Oh, my mistake. I'm using Spacemacs and it looks like it's just using racket-mode..?

https://www.spacemacs.org/layers/+lang/racket/README.html

reply
> The biggest downside of Racket is that you can't build up your environment incrementally the way you can with Common Lisp/Sly. When you change anything in your source you reload REPL state from scratch.

I think no Lisp is a "true" Lisp if it doesn't provide two critical components of the Lisp experience:

- Live Images

- REPL-driven development

That's why Clojure/Racket and even Scheme are Lisp-y but not a true Lisp. The only true Lisp languages I've found are CL and Janet.

reply
Is this not ultimately a late-binding issue? Maybe I'm missing something, but I've absolutely been able to incrementally build up an environment without resetting using nrepl and Clojure
reply
You are not a true LISP unless you use M-Expressions like the LISP 1.5 manual from the 1960s says. S-Expressions are inauthentic.
reply
The Little Learner is a great book. I tried rewriting all the code in Python/JAX while following the Scheme code style as closely as possible, and it worked out great.

The appendix on autodiff is a bit rushed, in my opinion. But in all fairness, the number of pages would probably need to be doubled to give a proper exposition of autodiff.

reply