summaryrefslogtreecommitdiffstats
path: root/2024/talks/transducers.md
blob: 5abe4371580dbfce6055666ecf3481bfbe2a9c35 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
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&#x2026;

-   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"]]