monad-task Task monad transformer that turns event processing into co-routine programming. See Invert the Inversion of Control for a tutorial on writing a GLFW/OpenGL application using task monad.