Matchure: Serious Clojure Pattern Matching
spin.atomicobject.com
Matchure: Serious Clojure Pattern Matching
1–7 of 7 posts
Re: Matchure: Serious Clojure Pattern Matching
#2Re: Matchure: Serious Clojure Pattern Matching
#3 (defn qsort
([] '())
([Head & Tail] (let [lower (filter #(= % Head) Tail)]
(concat (apply qsort lower) (list Head) (apply qsort upper)))))
I have barely played around with Clojure though, so if there is a nicer way to express that code, please drop a comment and try not to tear me to pieces. My point is that I would love to have pattern matching available in function definitions similar to Haskell/Erlang.Re: Matchure: Serious Clojure Pattern Matching
#4Maybe I missed this from the article, but it would be really cool if someone would mash this pattern matching up in a macro with defn (maybe called "?defn" or something) so you could do stuff like the following without relying on apply: (defn qsort ([] '()) ([Head & Tail] (let [lower (filter #( = % Head) Tail)] (concat (apply qsort lower) (list Head) (apply qsort upper))))) I have barely played around with Clojure th…
Re: Matchure: Serious Clojure Pattern Matching
#5Maybe I missed this from the article, but it would be really cool if someone would mash this pattern matching up in a macro with defn (maybe called "?defn" or something) so you could do stuff like the following without relying on apply: (defn qsort ([] '()) ([Head & Tail] (let [lower (filter #( = % Head) Tail)] (concat (apply qsort lower) (list Head) (apply qsort upper))))) I have barely played around with Clojure th…
Re: Matchure: Serious Clojure Pattern Matching
#6Maybe I missed this from the article, but it would be really cool if someone would mash this pattern matching up in a macro with defn (maybe called "?defn" or something) so you could do stuff like the following without relying on apply: (defn qsort ([] '()) ([Head & Tail] (let [lower (filter #( = % Head) Tail)] (concat (apply qsort lower) (list Head) (apply qsort upper))))) I have barely played around with Clojure th…
You can handle your particular case with Clojure's fn argument destructuring. No need for pattern matching.
(defn factorial
([0] 1)
([x] (* x (factorial (- x 1)))))Re: Matchure: Serious Clojure Pattern Matching
#7Earlier quoted context omitted.
You can handle your particular case with Clojure's fn argument destructuring. No need for pattern matching.
Thanks for the info, didn't know you could do that! What about the classic factorial, though? (defn factorial ([0] 1) ([x] (* x (factorial (- x 1)))))
(use 'matchure)
(defn-match factorial
([0] 1)
([?x] (* x (factorial (dec x)))))