Agreed. I think Clojure strikes a pretty reasonable balance here. It's opinionated about the programming paradigm, scales back some of the pain that comes from reader macros, and solves some of the bootstrapping problems by compatibility with other JVM languages.
harperlee|17 days ago
skydhash|17 days ago
Emacs isn’t required. You can always create a REPL plugin. Emacs just does a lot of heavy lifting for you due to comint, sexp navigation, and process management being included.
> building your own library from scratch instead of contributing to a standard library
Simple data structures lead to very generic function. You don’t have to write tower or massive spread of abstractions like in Java or TypeScript. A struct is nothing than a hashmap that can help a typechecker. Most lisp programs prefer primitives or functions instead of manipulating complex objects -never ‘buffer.name’ but ‘(get-buffer-name buffer)’-.
From a module, what you need are functions and an opaque state holder.
With such philosophy, you don’t need a lot of libraries, which are often designed to be complex, when you need a simple model.
> Third one you need to mutate it a little bit
You don’t. Clojure already does the optimization for you for the standard data structures, and they are the only things you need in most cases.