{-# OPTIONS --cubical-compatible --safe #-}
module Effect.Monad.Reader.Transformer.Base {r} (R : Set r) where
open import Level using (Level; suc; _⊔_)
open import Function.Base using (id)
private
variable
g : Level
A : Set r
record RawMonadReader
(M : Set r → Set g)
: Set (suc r ⊔ g) where
field
reader : (R → A) → M A
local : (R → R) → M A → M A
ask : M R
ask = reader id
record ReaderT
(M : Set r → Set g)
(A : Set r)
: Set (r ⊔ g) where
constructor mkReaderT
field runReaderT : R → M A
open ReaderT public