Ruby on Rails [ Ruby On Rails.ppt ] - [Ruby - [Ruby-Doc.org ...
Іван Лаврів "Transducers for ruby developers"
-
Upload
forge-events -
Category
Engineering
-
view
154 -
download
5
Transcript of Іван Лаврів "Transducers for ruby developers"
![Page 1: Іван Лаврів "Transducers for ruby developers"](https://reader034.fdocuments.us/reader034/viewer/2022052514/587a7b391a28abf0468b5fe5/html5/thumbnails/1.jpg)
Transducers for ruby developers
@ilavriv
![Page 2: Іван Лаврів "Transducers for ruby developers"](https://reader034.fdocuments.us/reader034/viewer/2022052514/587a7b391a28abf0468b5fe5/html5/thumbnails/2.jpg)
About MeFront - End Engineer temy.co
Rust meetups co - organizer
speeker
Teacher for PLLUG Community
twitter: @ilavriv
github: lavriv92
![Page 3: Іван Лаврів "Transducers for ruby developers"](https://reader034.fdocuments.us/reader034/viewer/2022052514/587a7b391a28abf0468b5fe5/html5/thumbnails/3.jpg)
History Presented by Rich Hickey
Implemented on Clojure
![Page 4: Іван Лаврів "Transducers for ruby developers"](https://reader034.fdocuments.us/reader034/viewer/2022052514/587a7b391a28abf0468b5fe5/html5/thumbnails/4.jpg)
![Page 5: Іван Лаврів "Transducers for ruby developers"](https://reader034.fdocuments.us/reader034/viewer/2022052514/587a7b391a28abf0468b5fe5/html5/thumbnails/5.jpg)
What is transducers
Composable algorithmic transformations
![Page 6: Іван Лаврів "Transducers for ruby developers"](https://reader034.fdocuments.us/reader034/viewer/2022052514/587a7b391a28abf0468b5fe5/html5/thumbnails/6.jpg)
Concept of transducers All operations with collections can be implemented with redice
function
We don`t know nothing about types of collections
We can compose results
Collectiong results of computions
![Page 7: Іван Лаврів "Transducers for ruby developers"](https://reader034.fdocuments.us/reader034/viewer/2022052514/587a7b391a28abf0468b5fe5/html5/thumbnails/7.jpg)
Function composition compose(collection, transformation1, transformation2, … , transformationN)
![Page 8: Іван Лаврів "Transducers for ruby developers"](https://reader034.fdocuments.us/reader034/viewer/2022052514/587a7b391a28abf0468b5fe5/html5/thumbnails/8.jpg)
But!Results not reusable
Different types of results
![Page 9: Іван Лаврів "Transducers for ruby developers"](https://reader034.fdocuments.us/reader034/viewer/2022052514/587a7b391a28abf0468b5fe5/html5/thumbnails/9.jpg)
Signature
(whatever, input -> whatever ) -> (whatever -> input -> whatever)
![Page 10: Іван Лаврів "Transducers for ruby developers"](https://reader034.fdocuments.us/reader034/viewer/2022052514/587a7b391a28abf0468b5fe5/html5/thumbnails/10.jpg)
![Page 11: Іван Лаврів "Transducers for ruby developers"](https://reader034.fdocuments.us/reader034/viewer/2022052514/587a7b391a28abf0468b5fe5/html5/thumbnails/11.jpg)
ImplementationClojure - native
Erlang
Ruby
Python3
![Page 12: Іван Лаврів "Transducers for ruby developers"](https://reader034.fdocuments.us/reader034/viewer/2022052514/587a7b391a28abf0468b5fe5/html5/thumbnails/12.jpg)
Why i can use transducers Text processing
Operations for collections map, filter, reduce
Needs better performance
![Page 13: Іван Лаврів "Transducers for ruby developers"](https://reader034.fdocuments.us/reader034/viewer/2022052514/587a7b391a28abf0468b5fe5/html5/thumbnails/13.jpg)
Transducers map
filter
take
...
![Page 14: Іван Лаврів "Transducers for ruby developers"](https://reader034.fdocuments.us/reader034/viewer/2022052514/587a7b391a28abf0468b5fe5/html5/thumbnails/14.jpg)
Transducers and Ruby require ‘transducers’
T = Transducers
t = T.compose(
T.filter(:even?),
T.map(|n| n * 2),
T.take(5))
result = T.transduce(t, :<<, [], 1..100)
![Page 15: Іван Лаврів "Transducers for ruby developers"](https://reader034.fdocuments.us/reader034/viewer/2022052514/587a7b391a28abf0468b5fe5/html5/thumbnails/15.jpg)
Ruby transducers-ruby by cognitech lab
Github: https://github.com/cognitect-labs/transducers-ruby
![Page 16: Іван Лаврів "Transducers for ruby developers"](https://reader034.fdocuments.us/reader034/viewer/2022052514/587a7b391a28abf0468b5fe5/html5/thumbnails/16.jpg)
Linkshttp://clojure.org/transducers
http://clojure.com/blog/2012/05/15/anatomy-of-reducer.html
https://www.youtube.com/watch?v=6mTbuzafcII
http://cognitect-labs.github.io/
![Page 17: Іван Лаврів "Transducers for ruby developers"](https://reader034.fdocuments.us/reader034/viewer/2022052514/587a7b391a28abf0468b5fe5/html5/thumbnails/17.jpg)
Questions?