{-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE RebindableSyntax #-} module Control.Dsl.Monadic where import Control.Dsl.PolyCont import qualified Prelude -- | This @Monadic@ keyword extracts the monadic value of a monadic expression. newtype Monadic m r a = Monadic (m a) instance Prelude.Monad m => PolyCont (Monadic m) (m b) a where runPolyCont (Monadic k) = (Prelude.>>=) k