{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE Rank2Types #-}

module MHask.Util where

type m ~> n = forall x. m x -> n x

(~>) :: (Monad a, Monad b, Monad c) => (a ~> b) -> (b ~> c) -> (a ~> c)
f1 ~> f2 = f2 . f1