Re:TimL: Clojure-like Lisp dialect that runs on and compiles...
by jakebasile on Saturday May 27, 2023 @08:01PM
(#36099716)
Clojure still uses S expressions, it just has more than just lists available. Square brackets don't make lists, they make vectors. Commas are always optional. I don't know what you mean by "arbitrary lists where pairs which belong together aren't grouped", but maybe you mean maps or sets, which are also not lists but a different data type.
Different data types are used for different things. Vectors have more natural insertion behavior, so most people use them where that might happen.
[ Parent
| on HN ]
Re:TimL: Clojure-like Lisp dialect that runs on and compiles...
by tmtvl on Monday May 29, 2023 @05:54AM
(#36112377)
The example that most typifies my issues with Clojure syntax is let-binding. In Lisp it's very clearly structured:
(let ((foo bar)
baz
(quux frob))
...)
In Clojure not only are the bindings unstructured, they are thrown into a vector. Not a list, not a map (for which Clojure has dedicated syntax, mind), a vector. (let [foo bar baz quux frob]
...)
And that is one of the only two places I know of where Clojure arbitrarily uses a vector when it uses lists everywhere else: (defn foo [bar] ...)
Instead of either of: (defn foo (bar) ...)
[defn foo [bar] ...]