packages feed

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

module Haskell.Law.Monad.Either where

open import Haskell.Prim
open import Haskell.Prim.Either

open import Haskell.Prim.Monad

open import Haskell.Law.Monad.Def

open import Haskell.Law.Applicative.Either

instance
  iPreLawfulMonadEither : PreLawfulMonad (Either a)
  iPreLawfulMonadEither = λ where
    .leftIdentity _ _ → refl
    .rightIdentity (Left  x) → refl
    .rightIdentity (Right x) → refl
    .associativity (Left  x) _ _ → refl
    .associativity (Right x) _ _ → refl
    .def->>->>= _ _ → refl
    .def-pure-return _ → refl
    .def-fmap->>= _ → λ where
      (Left  x) → refl
      (Right x) → refl
    .def-<*>->>= → λ where
      (Left  _) _ → refl
      (Right _) (Left  _) → refl
      (Right _) (Right _) → refl

  iIsLawfulMonadEither : IsLawfulMonad (Either a)
  iIsLawfulMonadEither = record {}