### Destructuring destructuring forms
(deconstruct binding-form)Returns a flat sequence of the symbols bound in the binding-form in depth-first order.
(deconstruct '[a & {:keys [x] y :_y :or {x 1} :as m}])
=> '[a x y m]
Returns a flat sequence of the symbols bound in the binding-form
in depth-first order.
```clojure
(deconstruct '[a & {:keys [x] y :_y :or {x 1} :as m}])
=> '[a x y m]
```(disentangle binding-form)Parses one level of destructuring.
(disentangle '[a b & [c]])
=> '{:items [a b], :more [c]}
(disentangle '{:keys [a] b :b [c1 c2] :c :or {d 1} :as m})
=> '{:items [a b [c1 c2]],
:as m,
:or {d 1},
:mapping {a :a, b :b, [c1 c2] :c}}
Parses one level of destructuring.
```clojure
(disentangle '[a b & [c]])
=> '{:items [a b], :more [c]}
(disentangle '{:keys [a] b :b [c1 c2] :c :or {d 1} :as m})
=> '{:items [a b [c1 c2]],
:as m,
:or {d 1},
:mapping {a :a, b :b, [c1 c2] :c}}
```(restructure binding-form mapping)Undoes what destructure does.
(restructure [x & {:keys [a b] c :cc d :d :or {d 3}}]
{x 0 a 1 b 2 c 3})
=> [0 :a 1 :b 2 :cc 3 :d nil]
Undoes what destructure does.
```clojure
(restructure [x & {:keys [a b] c :cc d :d :or {d 3}}]
{x 0 a 1 b 2 c 3})
=> [0 :a 1 :b 2 :cc 3 :d nil]
```cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |