A port of clojure.math.combinatorics