On Sat, Dec 28, 2013 at 5:13 PM, Tom Ellis <tom-lists-haskell-cafe-2013 at jaguarpaw.co.uk> wrote: > data Wrap m n a = Wrap (m (n a)) This is Compose [0] from traversable. It doesn't have a Monad instance, though... Erik [0] http://hackage.haskell.org/package/transformers-0.3.0.0/docs/Data-Functor-Compose.html