Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (defrecord Tree [value children])
- (defrecord File [name size dir?])
- (defn- parallel-map [f coll]
- (if (> (count coll) 3)
- (pmap f coll)
- (map f coll)))
- (defn build-file-tree [file]
- (let [file (if (string? file) (java.io.File. file) file)
- name (.getName file)
- dir? (.isDirectory file)
- children (.listFiles file)
- sub-trees (parallel-map build-file-tree children)]
- (Tree.
- (File.
- name
- (if dir?
- (reduce + (parallel-map #(:size (:value %)) sub-trees))
- (.length file))
- dir?)
- sub-trees)))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement