| Copyright | (c) 2015-2018 Rudy Matela |
|---|---|
| License | 3-Clause BSD (see the file LICENSE) |
| Maintainer | Rudy Matela <rudy@matela.com.br> |
| Safe Haskell | None |
| Language | Haskell2010 |
Test.LeanCheck.Function.Show.EightLines
Contents
Description
This module is part of LeanCheck, a simple enumerative property-based testing library.
This module exports an orphan Show instance for functions.
It shows functions as up to 8 case distinctions, one per line.
Please see Test.LeanCheck.Function.Show.FourCases for an alternative that shows functions as up to 4 case distinctions in a single line.
The Show '->' instance only works for functions of which ultimate return
types are instances of the ShowFunction typeclass. Please see
Test.LeanCheck.Function.ShowFunction for how to define these instances for
your user-defined algebraic datatypes.
Warning: this is only intended to be used in testing modules. Avoid importing this on modules that are used as libraries.
Orphan instances
| (Show a, Listable a, ShowFunction b) => Show (a -> b) Source # | A multi-line show instance for functions. This is intended to > print (&&)
\x y -> case (x,y) of
(True,True) -> True
_ -> False> print (==>)
\x y -> case (x,y) of
(True,False) -> False
_ -> True> print (==2)
\x -> case x of
2 -> True
_ -> False> print (\x -> abs x < 2)
\x -> case x of
0 -> True
1 -> True
-1 -> True
_ -> FalseWhen the function cannot be defined by finite exceptions to a constant
function using 8 case-patterns, the rest of the function is represented by
> print (+)
\x y -> case (x,y) of
(0,0) -> 0
(0,1) -> 1
(1,0) -> 1
(0,-1) -> -1
(1,1) -> 2
(-1,0) -> -1
(0,2) -> 2
(1,-1) -> 0
... |