module Control.Newtyper where import Control.Newtype import Control.Kleislify packM :: (Monad m, Newtype n o) => (a -> m o) -> a -> m n packM = (pack ^<=) unpackM :: (Monad m, Newtype n o) => (a -> m n) -> a -> m o unpackM = (unpack ^<=) packF :: (Functor f, Newtype n o) => (a -> f o) -> a -> f n packF = (pack ^<-) unpackF :: (Functor f, Newtype n o) => (a -> f n) -> a -> f o unpackF = (unpack ^<-)