module Control.Monad.Indexed.Signatures where type CallCC f g h a b c d = ((a -> f b) -> g c) -> h d type Catch e f g h a b c = f a -> (e -> g b) -> h c type Listen w f a b = b -> f (a, w) type Pass z f g a b = f (a, z) -> g b