came across over the net the following examples.
I can understand full destructuring because "[" and "]"
mirrors the structure of tree.
But in partial desctructuring, [[a [b]] has extra pair of outer-most
[] which leads to confusion. Any explanation on that?
Also not sure about the last (on strings).

Thanks in advance
sun



(def flat "flat")
(def tree '(("one" ("two")) "three" ((("four")))))

;; Simple binding (like Common Lisp's LET*).
(let [var1 flat
      var2 tree]
  (list var1 var2))

-> ("flat" (("one" ("two")) "three" ((("four")))))

;; Full destructuring.
(let [var1 flat
      [[a [b]] c [[[d]]]] tree]
  (list var1 a b c d))

-> ("flat" "one" "two" "three" "four")

;; Partial destructuring.
(let [[[a [b]] & leftover :as all] tree]
  (list a b leftover all))

-> ("one" "two" ("three" ((("four"))))
    (("one" ("two")) "three" ((("four")))))

;; Works on strings, too.
(let [[a b c & leftover] "123go"]
  (list a b c leftover))

-> (\1 \2 \3 (\g \o))





--~--~---------~--~----~------------~-------~--~----~
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
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