This site http://paste.lisp.org/display/97057 shows various examples
of destructuring in Clojure ranging from basic to advanced. I managed
to follow the more basic examples, but then got quickly lost when I
looked at this one:

(let [ [{a :a b :b c :c :as m :or {a 100 b 200}} [p q r & s] ]
[{:a 5 :c 6} [1 2 3 4 5]] ] [a b c m p q r s])

; Result: [5 200 6 {:a 5, :c 6} 1 2 3 (4 5)]

For example, I don't understand what [p q r & s] is doing here and how
{:a 5, :c 6} ends up in the result.

Other examples such as the following are even more complicated and I
don't even know where to start:

(let [ [ {:keys [a b c]} & [[d & e] {:keys [x y] :or {z 10000 y
555}}]]
[ {:a 1 :b 2} "quux" {:x 1000 :y 999}]]
[a b c d e x y])

;; Result: [1 2 nil \q (\u \u \x) 1000 999]

This kind of advanced destructuring makes the code much less readable
for me. But this might just be because I am still new to Clojure.

Therefore I would like to ask the following question:
-- Are the above examples used in 'real' code or do they mainly serve
as examples of what you can do with destructuring? In other words: Is
this idiomatic Clojure coding style?

Thanks in advance!

Stefan

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to