On 27 Jan 2017, at 07:04, Didier <didi...@gmail.com> wrote: > Some languages have pattern matching, and Clojure is said to not have it > (without a library), but it does have destructuring. > > It seems to me that destructuring is the same as pattern matching, except > that it can only be used inside function arguments,
Destructuring can be used anywhere there is an implicit or explicit let binding. So you can use destructuring in a let, or in macro arguments: https://clojure.org/guides/destructuring > where as pattern matching can also be used when assigning a value or inside > case switch statements. > > Is that truly the only difference? And if so, why the different terminology? I think the main distinction is that you can’t use destructuring in switching and case statements. Why have a different term? Destructuring does one specific job - picking apart data to allow binding that expresses relationships between values more cleanly. It doesn’t do case statements or switches as pattern matching does. Case statements and switch statements are useful for controlling the circumstances under which code is evaluated, e.g. - you don’t want to evaluate (/ x y) where y is 0. If you don’t need to do that in a particular case, then in that case you don’t need a case or switch statement and your code may be better and clearer without it. And if you don’t need a case or switch statement then you don’t need pattern matching to make it concise. For example, you might have a map with keywords as keys and functions as values and just insert a function by calling the map with the relevant keyword instead of switching or casing. Alan -- 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 --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.