As far as macros go, I greatly prefer racket's syntax-parse to anything else I've tried.
As far as macros go, I greatly prefer racket's syntax-parse to anything else I've tried.
Also personally something I wish more functional languages would have is a little bit of Racket's maximalism with its forms like: (for/list ([e (range 10)]) e) [1] and for/fold, including the nested ones and the like that make mapping over things and even filtering a dream!
[1] https://docs.racket-lang.org/reference/for.html#%28form._%28...
The code it outputs is almost always as fast as a hand-rolled named-let (just as with racket), and you can port it without much difficulty to other schemes. I support most of the sequence iterators (in-range, in-list etc) and support non-tco loops to create things like lazy streams.