closureが他と比べて短いのはここだね。

(defn distribution [items]
(persistent!
(reduce #(let [lowcase (.toLowerCase #^String %2)]
(assoc! %1 lowcase (inc (%1 lowcase 0)))) (transient {}) items)))

(defn process-newsgroups [dir]
(let [format #(str-join \newline (map (fn [_] (str-join \tab _)) %))
data (reduce #(merge-with + %1 %2)
(pmap #(distribution (re-seq #"\w+" (slurp* %)))
(filter #(.isFile #^File %)
(file-seq (java.io.File. dir)))))]
(spit "/home/lau/Desktop/alphabetical" (format (sort data)))
(spit "/home/lau/Desktop/decending" (format (sort-by val > data)))))


しかし、最速なのはpythonなのが意外。