packages feed

quickspec-2.1.1: examples/ListMonad.hs

-- The monad laws for lists.
import Control.Monad
import QuickSpec

main = quickSpec [
  withMaxTestSize 20,
  con "return" (return :: A -> [A]),
  con ">>=" ((>>=) :: [A] -> (A -> [B]) -> [B]),
  con "++" ((++) :: [A] -> [A] -> [A]),
  con ">=>" ((>=>) :: (A -> [B]) -> (B -> [C]) -> A -> [C]) ]