Comonads monads 23 While monads are a very useful abstraction for handling side effects, there’s a class of effects they can’t address. For those, you need a related abstraction called comonads. IO All programs must have side effects to be useful. There must exist a way for information to get into and out of a program. There are two ways for a program to aquire information to work on. Synchronous