Skip to content

Pattern matching & destructuring

Pre-release
Pre-release
Compare
Choose a tag to compare
@sigmasoldi3r sigmasoldi3r released this 24 Jul 09:55
· 49 commits to master since this release

Added pattern matching and destructuring assignment.

  • Now when expression can match against destructured tuples.
  • Let bindings can destructure tuples.
  • Shifted # to _ for default fallback.

Examples:

(let [val ["a" 5 {:yes "you"}]]
  (println! "Example: "
    (when val
      ["a" _ _] "Was A!"
      [_ 5 _] "Was 5!"
      _ "No match...")))
(let [tpl ["a" :b 5]]
  (let [[a b c] tpl] ; Ease of destructure in let bindings, for example.
    (println! tpl)
    (println! "a: " (:0 tpl)) ; Table-like element access
    (println! "a: " a)
    (println! "b: " b)
    (println! "c: " c)))