In recent years, the impact of functional programming on mainstream languages has grown significantly.
After conquering server applications and distributed systems,
the paradigm is now conquering the fields of web development and data analytics.
So what remains? The land of system programming.
When Mozilla did release the language Rust in 2012,
it did immediately striked interest from functional programming enthusiasts due to it's strong emphasis on safety.
Even though it currently lacks some advanced features like higher kinded types,
it is built with functional programming principles as it's core.
Like a Trojan horse (or the parasite mushroom after the language is named),
Rust looks like the next C on the outside... while it might actually be closer to Haskell on the inside!
Let's take a tour and discover an other side of system programming by learning together how to do functional programming in Rust.
The streaming of data in a purely functional language is a fascinating problem that have been extensively explored over the years.
In this talk we'll first briefly outline historical solutions to the problem and discuss their advantages and disadvantages,
we will then follow with a practical introduction to the great `machines` library from Edward Kmett.
We will see how the library usage compare to other players in the ecosystem (pipes, conduit, ...),
and walk through real world examples giving us a chance to write our own combinators and understand some of the internals.