Address changes to PR adding threading forms

This commit is contained in:
Alex Lynham 2019-09-23 16:42:40 +01:00 committed by Colin Jones
parent ba141d0fc2
commit 3afe01adc7
3 changed files with 19 additions and 15 deletions

View file

@ -275,7 +275,8 @@
12
[1 2 3]]}]
["26_transducers" {"__" [[2 4]
["26_transducers" {"__" ['(2 3 4)
[2 4]
[2 4]
[2 4]
6]}]

View file

@ -7,15 +7,11 @@
(def a-list-with-maps
'({:a 1} {:a 2} {:a 3}))
(defn function-that-takes-a-map [m a b]
(do
(println (str "Other unused arguments: " a " " b))
(get m :a)))
(defn function-that-takes-a-map [map a b]
(get map :a))
(defn function-that-takes-a-coll [a b coll]
(do
(println (str "Other unused arguments: " a " " b))
(map :a coll)))
(map :a coll))
(meditations
"We can use thread first for more readable sequential operations"

View file

@ -1,23 +1,30 @@
(ns koans.26-transducers
(:require [koan-engine.core :refer :all]))
(def xfms
(def example-transducer
(map inc))
(def transforms
(comp (map inc)
(filter even?)))
(meditations
"Consider that sequence operations can be used as transducers"
"A sequence operation with only one argument often returns a transducer"
(= __
(transduce xfms conj [1 2 3]))
(sequence example-transducer [1 2 3]))
"Consider that sequence operations can be composed as transducers"
(= __
(transduce transforms conj [1 2 3]))
"We can do this eagerly"
(= __
(into [] xfms [1 2 3]))
(into [] transforms [1 2 3]))
"Or lazily"
(= __
(sequence xfms [1 2 3]))
(sequence transforms [1 2 3]))
"The transduce function can combine mapping and reduction"
(= __
(transduce xfms + [1 2 3])))
(transduce transforms + [1 2 3])))