<story><title>My mental model of Clojure transducers</title><url>https://blog.danieljanus.pl/2023/09/09/transducers/</url></story><parent_chain></parent_chain><comment><author>curuinor</author><text>It seems folks want a working example. Here&amp;#x27;s one in prod:&lt;p&gt;Metabase is a BI tool, backend written mostly in Clojure. Like basically all BI tools they  have this intermediate representation language thing so you write the same thing in &amp;quot;MBQL (metabase query language)&amp;quot; and it theoretically becomes same query in like, Postgres and Mongo and whatever. End user does not usually write MBQL, it&amp;#x27;s a service for the frontend querybuilding UI thing and lots of other frontend UI stuff mainly in usage.&lt;p&gt;Whole processing from MBQL -&amp;gt; your SQL or whatever is done via a buncha big-ass transducers. There&amp;#x27;s a query cache and lots of other stuff, you need state, but you also need it to be basically fast. Metabase is not materially faster than other BI tools (because all the other BI tools do something vaguely similar in their langs and because the limiting factor is still the actual query running in most cases) but it&amp;#x27;s pretty comparable speed and the whole thing was materially written by like 5 peeps.&lt;p&gt;&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;metabase&amp;#x2F;metabase&amp;#x2F;blob&amp;#x2F;master&amp;#x2F;src&amp;#x2F;metabase&amp;#x2F;query_processor.clj&quot;&gt;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;metabase&amp;#x2F;metabase&amp;#x2F;blob&amp;#x2F;master&amp;#x2F;src&amp;#x2F;metabas...&lt;/a&gt;&lt;p&gt;(nb: I used to work for Metabase but currently do not. but open core is open core)</text></comment>
<story><title>My mental model of Clojure transducers</title><url>https://blog.danieljanus.pl/2023/09/09/transducers/</url></story><parent_chain></parent_chain><comment><author>bjoli</author><text>I wrote SRFI-171 for scheme. Ask me anything.&lt;p&gt;I have had many people tell me that the SRFI document [0] made transducers click for them, which is always a nice thing to hear.&lt;p&gt;0: &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;srfi.schemers.org&amp;#x2F;srfi-171&amp;#x2F;srfi-171.html&quot; rel=&quot;nofollow noreferrer&quot;&gt;https:&amp;#x2F;&amp;#x2F;srfi.schemers.org&amp;#x2F;srfi-171&amp;#x2F;srfi-171.html&lt;/a&gt;</text></comment>