A member of SCBCN coded a beautiful solution in F# for the Binary Search Tree kata.
I wanted to try using pattern matching to get to a similar solution in Clojure.
So I watched Sean Johnson's Pattern Matching in Clojure talk and read a bit the documentation of clojure/core.match.
My intention was to use defrecord matching, but I couldn't make it work.
Later I found out in an answer to this StackOverflow question, Pattern matching on records in Clojure, that this feature hadn't been implemented yet.
So I followed the advice given in StackOverflow of using map pattern matching and coded this version of the Binary Search Tree:
Even though is not as nice as the F# one, it reads very well and allowed me to get rid of the value, left and right private helpers and all ifs.
Then I tried another thing that Sean Johnson had mentioned in his talk.
I coded another Binary Search Tree solution using the defun macro which creates functions with pattern matching like in Erlang, or Elixir
This is the resulting code using defun:
which also reads very nice.