pure functional implementation of leftist heap in clojure