packages feed

agda2hs-1.4: lib/base/Haskell/Law/Monad/Maybe.agda

module Haskell.Law.Monad.Maybe where

open import Haskell.Prim
open import Haskell.Prim.Maybe

open import Haskell.Prim.Monad

open import Haskell.Law.Monad.Def

open import Haskell.Law.Applicative.Maybe

instance
  iPreLawfulMonadMaybe : PreLawfulMonad Maybe
  iPreLawfulMonadMaybe = λ where
    .leftIdentity _ _ → refl
    .rightIdentity → λ where
      Nothing  → refl
      (Just _) → refl
    .associativity → λ where
      Nothing  _ _ → refl
      (Just _) _ _ → refl

    .def->>->>= _ _ → refl
    .def-pure-return _ → refl

    .def-fmap->>= _ → λ where
      Nothing → refl
      (Just _) → refl
    .def-<*>->>= → λ where
      Nothing  _        → refl
      (Just _) Nothing  → refl
      (Just _) (Just _) → refl

  iIsLawfulMonadMaybe : IsLawfulMonad Maybe
  iIsLawfulMonadMaybe = record {}