agda2hs-1.4: lib/base/Haskell/Law/Monad/List.agda
module Haskell.Law.Monad.List where
open import Haskell.Prim
open import Haskell.Prim.List
open import Haskell.Prim.Monad
open import Haskell.Law.Monad.Def
open import Haskell.Law.List
open import Haskell.Law.Applicative.List
instance
iPreLawfulMonadList : PreLawfulMonad List
iPreLawfulMonadList .leftIdentity _ _ = ++-[] _
iPreLawfulMonadList .rightIdentity [] = refl
iPreLawfulMonadList .rightIdentity (x ∷ xs)
rewrite iPreLawfulMonadList .PreLawfulMonad.rightIdentity xs
= refl
iPreLawfulMonadList .associativity [] f g = refl
iPreLawfulMonadList .associativity (x ∷ xs) f g
rewrite associativity xs f g
| concatMap-++-distr (f x) (xs >>= f) g
= refl
iPreLawfulMonadList .def->>->>= _ _ = refl
iPreLawfulMonadList .def-pure-return _ = refl
iPreLawfulMonadList .def-fmap->>= _ [] = refl
iPreLawfulMonadList .def-fmap->>= f (x ∷ xs)
rewrite iPreLawfulMonadList .PreLawfulMonad.def-fmap->>= f xs
= refl
iPreLawfulMonadList .def-<*>->>= [] xs = refl
iPreLawfulMonadList .def-<*>->>= (f ∷ fs) xs
rewrite iPreLawfulMonadList .PreLawfulMonad.def-<*>->>= fs xs
| map-concatMap f xs
= refl
iIsLawfulMonadList : IsLawfulMonad List
iIsLawfulMonadList = record {}