Extensible Effects: An Alternative to Monad Transformers