Looking for transducer early-adopters

77 views
Skip to first unread message

Jack Firth

unread,
Nov 15, 2019, 2:18:23 AM11/15/19
to Racket Users
Hello all! I'd like to get Rebellion's transducer and reducer libraries up to feature parity with Racket's ordinary list-processing functions. So I'm looking for people interested in migrating some of their open-source Racket code to use transducers instead of using map / filter / fold / append-map / etc. Even just pointing me to some of your code on GitHub that does list processing would be a great help, since I could attempt to migrate it myself and see if there's any functionality I'm missing that stands in the way of migrating. Huge bonus points if your code has benchmarks I can run, so I can compare the performance of manual list processing v.s. Rebellion stream processing v.s. optimized for loops.

Alex Harsanyi

unread,
Nov 15, 2019, 8:15:10 AM11/15/19
to Racket Users

I'm not sure if this would be useful to you, but, as part of writing my tzgeolookup package, I wrote a blog post exploring the performance of different ways in which the underlying data is organized.  As a result of that, I have a repository with 10 variants of the same program using different strategies, and these programs are all instrumented, so running them will run a test suite and print out the time taken by each procedure.  You could implement a variant using transducers and compare it with all the others.

The repository is here: https://github.com/alex-hhh/time-zone-lookup-tests, and the blog post explains how the hole thing works:  https://alex-hhh.github.io/2019/08/timezone-lookup.html

The final package uses vectors, so I am not sure that would be useful in converting it to transducers, but if you want to look at it, it is here: https://github.com/alex-hhh/tzgeolookup

Alex.

Jack Firth

unread,
Nov 16, 2019, 2:36:56 AM11/16/19
to Racket Users
That's perfect! Thank you very much Alex.
Reply all
Reply to author
Forward
0 new messages