diff options
Diffstat (limited to '')
-rw-r--r-- | 2024/talks/transducers.md | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/2024/talks/transducers.md b/2024/talks/transducers.md new file mode 100644 index 00000000..5abe4371 --- /dev/null +++ b/2024/talks/transducers.md @@ -0,0 +1,47 @@ +[[!meta title="Transducers: finally, ergonomic data processing for Emacs!"]] +[[!meta copyright="Copyright © 2024 Colin Woodbury"]] +[[!inline pages="internal(2024/info/transducers-nav)" raw="yes"]] + +<!-- Initially generated with emacsconf-publish-talk-page and then left alone for manual editing --> +<!-- You can manually edit this file to update the abstract, add links, etc. ---> + + +# Transducers: finally, ergonomic data processing for Emacs! +Colin Woodbury (he) - <https://x.com/@fosskers> , @fosskers@m.fosskers.ca on Mastodon, <https://www.fosskers.ca> + +[[!inline pages="internal(2024/info/transducers-before)" raw="yes"]] + +Transducers are an ergonomic and extremely memory-efficient way to process a +data source. Here "data source" means simple collections like Lists or +Vectors, +but also potentially large files or generators of infinite data. + +Transducers… + +- allow the chaining of operations like map and filter without allocating memory between each step. +- aren't tied to any specific data type; they need only be implemented once. +- vastly simplify "data transformation code". +- have nothing to do with "lazy evaluation". +- are a joy to use! + +In this talk, Colin will introduce Transducers, show how to use them, and +demonstrate some Emacs-specific workflows that make live processing of large +data sets in JSON and CSV a breeze. + +About the speaker: + +Colin has been active in the FOSS world since 2011, publishing libraries and +applications primarily in Haskell and Rust. Since 2023 he has been using +Lisps +more and more, and after falling in love with Transducers from Clojure has +ported the pattern to three other Lisps. + +Colin is originally from Canada and lives in Japan. + + + +[[!inline pages="internal(2024/info/transducers-after)" raw="yes"]] + +[[!inline pages="internal(2024/info/transducers-nav)" raw="yes"]] + + |