Purely functional data structures in Clojure: Leftist Heaps