packages feed

agda2hs-1.3: lib/Haskell/Law/Monoid/Maybe.agda

module Haskell.Law.Monoid.Maybe where

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

open import Haskell.Prim.Monoid

open import Haskell.Law.Monoid.Def
open import Haskell.Law.Semigroup.Def
open import Haskell.Law.Semigroup.Maybe

instance
  iLawfulMonoidMaybe : ⦃ iMonoidA : Monoid a ⦄ → ⦃ iLawfulMonoidA : IsLawfulMonoid a ⦄ → IsLawfulMonoid (Maybe a)
  iLawfulMonoidMaybe .rightIdentity = λ { Nothing → refl; (Just _) → refl }

  iLawfulMonoidMaybe .leftIdentity = λ { Nothing → refl; (Just _) → refl }

  iLawfulMonoidMaybe .concatenation [] = refl
  iLawfulMonoidMaybe .concatenation (x ∷ xs) 
    rewrite (concatenation xs)
    = refl