------------------------------------------------------------------------
-- The Agda standard library
--
-- An effectful view of IO
------------------------------------------------------------------------
{-# OPTIONS --cubical-compatible --guardedness #-}
module IO.Effectful where
open import Level
open import Effect.Functor
open import Effect.Applicative
open import Effect.Monad
open import IO.Base
private
variable
f : Level
------------------------------------------------------------------------
-- Structure
functor : RawFunctor {f} IO
functor = record { _<$>_ = _<$>_ }
applicative : RawApplicative {f} IO
applicative = record
{ rawFunctor = functor
; pure = pure
; _<*>_ = _<*>_
}
monad : RawMonad {f} IO
monad = record
{ rawApplicative = applicative
; _>>=_ = _>>=_
}