4 ms·
I like Racket's way of handling them, to a degree. Each of {}, [], and () are interchangeable, and the use of [] is mostly down to convention. For example, it i
by bmitc 4y ago
I like Racket's way of handling them, to a degree. Each of {}, [], and () are interchangeable, and the use of [] is mostly down to convention. For example, it is often used in let bindings:
(define x
(let ([a 1]
[b 2])
(+ a b)))
By to a degree, I would actually prefer if the convention was enforced.
- gsinclair 4y agoThe convention is enforced in Clojure. [] for bindings, {} for maps.
- deleted 4y ago[deleted]
- funcDropShadow 4y agoIt is not a convention in Clojure. (), [], {}, #{} represent different data structures.
- Sakos 4y agoIt's really just syntactic sugar, so I would agree with the statement that the convention is being enforced.
- funcDropShadow 4y agoYou get different data structures. I.e. printing #{ 1 1 2 2 } prints #{ 1 2 } whereas [ 1 1 2 2 ] prints [ 1 1 2 2].
- tmtvl 4y agoNot exactly, it uses square brackets for vectors sometimes and curly brackets for maps sometimes, yet other times it uses square brackets for maps: (let [a 1 b 2] (+ a b)) Instead of: (let {a 1 b 2} (+ a b)) (I think my map notation may be wrong, I always just bounce off Clojure so I'm bound to make mistakes).
- shaunsingh0207 4y agoI quite like how fennel handles it as well, {} for standard lua tables and [] for arrays, but [] stands to define variables in a let binding. Of course this comes from Lua's quirks, but its a nice, sane way to handle it.
- lispm 4y agoThis is an old feature of some Scheme implementations. There are also books where the Scheme code is written this way, IIRC.