ClassLaws-0.3.1.0: Stating and checking laws for type class methods

Safe HaskellNone

Control.Monad.Laws

Description

This module implements the laws in Control.Monad, specified in the Haskell 2010 report, in 6.3.5 for Functor, in 6.3.6 for Monad, and in Chapter 13, module Control.Monad.

Synopsis

Documentation

data FunctorLaw1 a f Source

Instances

data FunctorLaw2 a b c f Source

Instances

(FunctorLaws f, TestEqual (f c)) => LawTest (FunctorLaw2 a b c f) 

defaultFunctorLaw2 :: Functor f => (b1 -> b, a -> b1, f a) -> Theorem (f b)Source

data MonadLaw1 a b m Source

Instances

(MonadLaws m, TestEqual (m b)) => LawTest (MonadLaw1 a b m) 

data MonadLaw2 b m Source

Instances

(MonadLaws m, TestEqual (m b)) => LawTest (MonadLaw2 b m) 

data MonadLaw3 b c d m Source

Instances

(MonadLaws m, TestEqual (m d)) => LawTest (MonadLaw3 b c d m) 

defaultMonadLaw1 :: Monad m => (a, a -> m b) -> Theorem (m b)Source

defaultMonadLaw2 :: Monad m => m b -> Theorem (m b)Source

defaultMonadLaw3 :: Monad m => (m a1, a1 -> m a, a -> m b) -> Theorem (m b)Source

data FunctorMonadLaw a b m Source

Instances

defaultFunctorMonadLaw :: (Monad f, Functor f) => (a -> b, f a) -> Theorem (f b)Source

data MonadPlusLaw1 a m Source

The laws for MonadPlus are less prominently declared in the base libraries.

Instances

data MonadPlusLaw2 a m Source

Instances

data MonadPlusLaw3 a b m Source

Instances

data MonadPlusLaw4 a m Source

Instances

data MonadPlusLaw5 a m Source

Instances

defaultMonadPlusLaw3 :: MonadPlus m => (a -> m b) -> Theorem (m b)Source

defaultMonadPlusLaw5 :: MonadPlus m => (m a, m a, m a) -> Theorem (m a)Source