{-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE ImportQualifiedPost #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE TypeFamilies #-} {-# OPTIONS_GHC -Wno-orphans #-} module Hedgehog.Extras.Internal.Orphans () where import Control.Applicative import Control.Monad.Base import Control.Monad.IO.Class import Control.Monad.Trans.Control import Control.Monad.Trans.Resource import System.IO (IO) import UnliftIO qualified instance MonadBase IO (ResourceT IO) where liftBase :: forall α. IO α -> ResourceT IO α liftBase = IO α -> ResourceT IO α forall α. IO α -> ResourceT IO α forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO instance MonadBaseControl IO (ResourceT IO) where type StM (ResourceT IO) a = a liftBaseWith :: forall a. (RunInBase (ResourceT IO) IO -> IO a) -> ResourceT IO a liftBaseWith = ((forall a. ResourceT IO a -> IO a) -> IO a) -> ResourceT IO a (RunInBase (ResourceT IO) IO -> IO a) -> ResourceT IO a forall b. ((forall a. ResourceT IO a -> IO a) -> IO b) -> ResourceT IO b forall (m :: * -> *) b. MonadUnliftIO m => ((forall a. m a -> IO a) -> IO b) -> m b UnliftIO.withRunInIO restoreM :: forall a. StM (ResourceT IO) a -> ResourceT IO a restoreM = a -> ResourceT IO a StM (ResourceT IO) a -> ResourceT IO a forall a. a -> ResourceT IO a forall (f :: * -> *) a. Applicative f => a -> f a pure