Monatron-IO-1.0: Control/Monatron/Zipper/IO.hs
{-# LANGUAGE TypeOperators, FlexibleContexts #-}
-- | An instance of the 'MonadIO' class for a zipper:
--
-- @
-- instance ('MonadIO' (t2 m), 'MonadT' t1, 'MonadT' t2, 'Monad' m) => 'MonadIO' ((t1 ':>' t2) m)
-- @
--
-- Re-exports "Control.Monad.IO.Class" for convenience.
module Control.Monatron.Zipper.IO (module Control.Monad.IO.Class) where
import Control.Monatron.Monatron (MonadT(..), Monad)
import Control.Monatron.Zipper ((:>), zipper)
import Control.Monad.IO.Class
instance (MonadIO (t2 m), MonadT t1, MonadT t2, Monad m) => MonadIO ((t1 :> t2) m) where
liftIO = zipper . lift . liftIO