Purely functional data structures in Clojure: Red-Black Trees