@lxsameer I designed my own dream lisp called brev but then got hired to work on writing Clojure code.
I love Clojure and think it's one of the world's best and easiest languages but I'm obviously missing some features from brev. In Clojure's favor, it's much better at concurrency than brev is. Brev is a tangled, dangerous, messy, magic, implicit footgun of a language.
I think plain un-namespaced symbols can make a lot code more simple. Just using words directly (symbols) without explicitly encoding their semantics and schema.
I also don't like the [], {} stuff. Stick to normal letters and round parens:
https://idiomdrottning.org/lisp-naming for example use (ht foo bar) over {:foo bar}
I don't like that keywords look like :this instead of like this: although I realize that it's to match Common Lisp. Brev inherits from Chicken (brev is implemented as a library for Chicken and can export its programs as Chicken modules) the ability to use either syntax equivalently.
I really miss brev's define which can destructure both in car and cdr positions.
For example:
(define ((open sesame) (arms legs))
(sesame legs))
((over (x y))
(map open (list - + - + -))
'((1 2) (3 4) (5 6) (7 8) (9 10)))
=> (-2 4 -6 8 -10)
There's lots and lots of other stuff I miss. The destructuring macro facility, the fn (Clojure has #(%1) but that can only handle one expression, there's no implicit do/progn/begin, and again the ascii art clutter issue), the as-list combinator that lets you use list operators on any data type etc.
Call-tables and side effects (although those make concurrency a lot more hairy).
@Sandra
Also forgot to ask that, how do you feel about reader macros and extensibility of a Lisp in general ?
(judging by your preferences around ascii chars usage I might be able to guess the answer though 😉 )