3 ms·
This is addressing a question I'm interested in, but on first read I'm struggling to see the value that's being presented here. - "parameterize" is great, but
by dasmoth 10y ago
This is addressing a question I'm interested in, but on first read I'm struggling to see the value that's being presented here.
- "parameterize" is great, but seems exactly the same as Clojure's "binding" on a dynamic variable. [Edit: modulo being "sticky" with regard to continuations... but Clojure doesn't have continuations, so it's a pretty subtle difference.]
- Reader macros are an interesting feature, but do move away from the syntactic regularity of LISP -- and were, AFAIK, explicitly rejected in Clojure
- Custodians are kind-of interesting -- but I ended up having to do some Googling [1] to find out exactly what they do...
Is there anywhere else I should be looking for a more systematic Racket/Clojure comparison?
[1] - https://docs.racket-lang.org/reference/eval-model.html#%28part._custodian-model%29 https://docs.racket-lang.org/reference/eval-model.html#%28pa...
- shakna 10y agoThe place where I've found Racket to shine is the reader macros. More specifically, a project can be broken up to be expressed in a way that makes sense, using what looks like, on the surface, multiple languages. Most of what I have done in Racket used #lang racket for the core, and lazy or typed everywhere else. Contracts and laziness made debugging a breeze. Edit: My clumsy hand hit reply before I was done.
- pareidolia 10y ago> - Reader macros are an interesting feature, but do move away from the syntactic regularity of LISP -- and were, AFAIK, explicitly rejected in Clojure That does not make sense to me since clojure introduced explicit irregular syntax for things like maps and vectors. In Common Lisp the "we-the-language-developers can introduce special typography but the users cannot" thing, in constrast, doesn't exist .
- weavejester 10y agoThe majority of Clojure's special syntax is for data structures, and while Clojure doesn't have reader macros, it does have data readers.
- technomancy 10y agoI don't know if it's systematic per se, but I wrote a comparison here: http://technomancy.us/169 http://technomancy.us/169 My take is that the biggest difference is not in the language but the runtime. Nearly all the things that Racket lacks (except world-class GC and JIT compilation) can be added in after the fact due to its massive flexibility; Racket is a natural choice when you want a lisp but can't afford the memory or launch time overhead of the JVM. Unfortunately the things that Racket does well typically cannot be retrofitted onto Clojure due to its sloppy semantics around nil, but maybe Clojure's port of Racket's contracts system will change the balance there.