-
Notifications
You must be signed in to change notification settings - Fork 4
/
core.clj
38 lines (26 loc) · 1.19 KB
/
core.clj
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
(ns reducers.core
(:require [clojure.core.reducers :as r]))
(map + [1 2 3]) ;=> (1 2 3)
(class(map + [1 2 3])) ;=> (1 2 3)
(def odyssey-text (slurp "odyssey.txt"))
(class odyssey-text) ;=> java.lang.String
(first odyssey-text) ;=> \P
(class (first odyssey-text)) ;=> java.lang.Character
(.hashCode (first odyssey-text)) ;=> 80
(.hashCode (second odyssey-text)) ;=> 114
(.hashCode (nth odyssey-text 2)) ;=> 111
(defn hashcode [c] (.hashCode c))
(map hashcode odyssey-text) ;=> (80 114 111..... )
(filter even? (map hashcode odyssey-text)) ;=> (80 114 ... )
(reduce + (filter even? (map hashcode odyssey-text))) ;=> 33702446
(dotimes [n 5]
(println (str "map - filter - reduce - ( run " n " ):"))
(time (reduce + (filter even? (map hashcode odyssey-text)))))
(reduce + (r/filter even? (r/map hashcode odyssey-text))) ;=> 33702446
(dotimes [n 5]
(println (str "r/map - r/filter - reduce - ( run " n " ):"))
(time (reduce + (r/filter even? (r/map hashcode odyssey-text)))))
(into [] (r/filter even? (r/map hashcode odyssey-text))) ;=> [80 114 ... ]
(dotimes [n 5]
(println (str "r/map - r/filter - r/fold - ( run " n " ):"))
(time (r/fold + (r/filter even? (r/map hashcode odyssey-text)))))