second commit
This commit is contained in:
1 parent
bc26778e41
commit
6d7a5afe21
92 files changed
+8207
-16
No files matched your search
@@ -0,0 +1,70 @@
|
||||
(ns transducerpres.slides.how
|
||||
(:require [transducerpres.slides.util :refer [defslide defmarkdownslide
|
||||
clj-code markdown-slide
|
||||
markdown-part]]))
|
||||
|
||||
(defslide intro-slide
|
||||
[:h3 "How do we create transducers?"]
|
||||
[:h3 "How do we use transducers?"])
|
||||
|
||||
(defn- func-link-bullet [name]
|
||||
(str "* `" name "`"))
|
||||
|
||||
(def transducer-functions (clojure.string/split "map cat mapcat filter remove take take-while take-nth drop drop-while replace partition-by partition-all keep keep-indexed map-indexed distinct interpose dedupe random-sample" #" "))
|
||||
|
||||
(defn transducer-function-list []
|
||||
(clojure.string/join "\n" (map func-link-bullet transducer-functions)))
|
||||
|
||||
(defmarkdownslide how-to-create
|
||||
"#### How to create transducers?"
|
||||
""
|
||||
"The majority of data processing method implement an arity that returns"
|
||||
"a transducer. The following functions produce a transducer when the "
|
||||
"input collection is omitted:"
|
||||
""
|
||||
(transducer-function-list))
|
||||
|
||||
(defmarkdownslide how-to-use
|
||||
"#### How to use a transducer?"
|
||||
""
|
||||
"* **transduce** is can be use like reduce"
|
||||
"* **eduction** is used to create reducible/iterable"
|
||||
"* **into** is used to append data to an existing collection"
|
||||
"* **sequence** can create a sequence from transducer")
|
||||
|
||||
(defslide example-1
|
||||
(markdown-part
|
||||
"#### example 1")
|
||||
(clj-code
|
||||
"(def xform (map #(* 2 %)))"
|
||||
""
|
||||
"(transduce xform + 0 (range 10))"
|
||||
";; 90"
|
||||
""
|
||||
"(eduction xform (range 10))"
|
||||
";; (0 2 4 6 8 10 12 14 16 18) ; an eduction"
|
||||
""))
|
||||
|
||||
|
||||
(defslide example-2
|
||||
(markdown-part
|
||||
"#### example 1... part 2")
|
||||
(clj-code
|
||||
"(def xform (map #(* 2 %)))"
|
||||
""
|
||||
"(into [1 2] xform (range 10))"
|
||||
";; [1 2 0 2 4 6 8 10 12 14 16 18]"
|
||||
""
|
||||
"(into (list 1 2) xform (range 10))"
|
||||
";; (18 16 14 12 10 8 6 4 2 0 1 2)"
|
||||
""
|
||||
"(sequence xform (range 10))"
|
||||
";; (0 2 4 6 8 10 12 14 16 18) ; lazy sec"))
|
||||
|
||||
|
||||
(defslide how-to-create-slides
|
||||
intro-slide
|
||||
how-to-create
|
||||
how-to-use
|
||||
example-1
|
||||
example-2)
|
||||
Reference in new issue
Block a user