A macro to define clojure functions with parameter pattern matching just like erlang or elixir.