একটি ট্রান্সডুসার পরিষ্কার সংজ্ঞা এখানে:
Transducers are a powerful and composable way to build algorithmic transformations that you can reuse in many contexts, and they’re coming to Clojure core and core.async.
এটি বুঝতে, আসুন নিম্নলিখিত সহজ উদাহরণটি বিবেচনা করুন:
(def village
[{:home :north :family "smith" :name "sue" :age 37 :sex :f :role :parent}
{:home :north :family "smith" :name "stan" :age 35 :sex :m :role :parent}
{:home :north :family "smith" :name "simon" :age 7 :sex :m :role :child}
{:home :north :family "smith" :name "sadie" :age 5 :sex :f :role :child}
{:home :south :family "jones" :name "jill" :age 45 :sex :f :role :parent}
{:home :south :family "jones" :name "jeff" :age 45 :sex :m :role :parent}
{:home :south :family "jones" :name "jackie" :age 19 :sex :f :role :child}
{:home :south :family "jones" :name "jason" :age 16 :sex :f :role :child}
{:home :south :family "jones" :name "june" :age 14 :sex :f :role :child}
{:home :west :family "brown" :name "billie" :age 55 :sex :f :role :parent}
{:home :west :family "brown" :name "brian" :age 23 :sex :m :role :child}
{:home :west :family "brown" :name "bettie" :age 29 :sex :f :role :child}
{:home :east :family "williams" :name "walter" :age 23 :sex :m :role :parent}
{:home :east :family "williams" :name "wanda" :age 3 :sex :f :role :child}])
আমরা কী জানতে পারি যে গ্রামে কত শিশু রয়েছে? আমরা নীচের রিডুসার দিয়ে এটি সহজেই খুঁজে পেতে পারি:
(def ex1a-map-children-to-value-1 (r/map #(if (= :child (:role %)) 1 0)))
(r/reduce + 0 (ex1a-map-children-to-value-1 village))
8
এটি করার আরেকটি উপায় এখানে:
(def ex1b-map-children-to-value-1 (map #(if (= :child (:role %)) 1 0)))
(transduce ex1b-map-children-to-value-1 + 0 village)
8
এছাড়াও, অ্যাকাউন্টগুলিতে সাবগ্রুপগুলি গ্রহণ করার সময় এটি সত্যই শক্তিশালী। উদাহরণস্বরূপ, আমরা যদি জানতে পারি যে ব্রাউন পরিবারে কতগুলি শিশু রয়েছে, আমরা মৃত্যুদণ্ড কার্যকর করতে পারি:
(def ex2a-select-brown-family (r/filter #(= "brown" (string/lower-case (:family %)))))
(def ex2a-count-brown-family-children (comp ex1a-map-children-to-value-1 ex2a-select-brown-family))
(r/reduce + 0 (ex2a-count-brown-family-children village))
2
আমি আশা করি আপনি এই উদাহরণগুলি সহায়ক পেতে পারেন। আপনি এখানে আরও জানতে পারেন
আশা করি এটা সাহায্য করবে.
ক্লেমেনসিও মোরালেস লুকাস।