All applications, eventually, come down to IO. Well, unless you have uncontrolled side-effects, which would be weird and horrible. This talk explores not only why you want the IO monad in Scala (i.e. why side-effects are weird and horrible), but also how it works. Specifically, we'll be looking at the new cats-effect project, which introduces not only a production-viable IO type for the cats framework, but also a set of typeclasses and rigorous laws for characterizing what an effect type is and how it should behave.
We will explore the nature of effect types, learn a bit about monads which don't look like List or Maybe, and gain an appreciation for the implementation challenges of lazy effect systems on the JVM.
Scala programmers with an interest in monads, FP in general, concurrency, and performance tuning and correctness on the JVM. Also really anybody who wonders what the point to the IO monad is.
Daniel Spiewak is a software developer based out of Boulder, CO. Over the years, he has worked with Java, Scala, Ruby, C/C++, ML, Clojure and several experimental languages. He currently spends most of his free time researching parser theory and methodologies, particularly areas where the field intersects with functional language design, domain-specific languages and type theory.