Co-Effects


Details
Hi Everyone,
Another Haskell meetup is scheduled for mid May. Drinks and pizza as always. Nihil Shah will be discussing co-effects. Hope to see you there.
Abstract:
Computational side-effects are the consequences of a computation on the environment that are not the output of the computation. Exceptions, changing global state, modifying a file-system, and launching missiles all fall into this category of “side-effects”. Side-effects make it difficult to reason about and debug code. Thankfully, in 1991, Eugenio Moggi’s seminal paper, “Notions of Computation and Monads” showed how side-effects could be reasoned about and even composed together using the abstraction called “monads”. Monads were baked into Haskell, and the rest is history. But what about coeffects?
“Coeffects”, informally dual to effects, are the dependencies a computation has on the environment that are not the input of the computation. Delightfully, just as effects can be modeled using monads, coeffects can be modeled using indexed comonads. In this talk, I show how many of the latest innovations in functional programming can be see as coeffects: implicit parameters, typeclasses, bounded reuse of variables, and dataflow computations.

Co-Effects