module Runnable where
class Runnable0 m where
runM0 :: m a -> a
class Runnable1 m h where
runM1 :: h -> m a -> a
runM1' :: h -> m a -> (a,h)
runM1 h m = fst (runM1' h m)
runM1' h m = (runM1 h m, h)
class Runnable2 m f where
runM2 :: f a -> m a -> a
class Monad m => Runnable m a | m -> a where
runM :: a -> m b -> b