Copyright | (c) 2015-2020 Rudy Matela |
---|---|

License | 3-Clause BSD (see the file LICENSE) |

Maintainer | Rudy Matela <rudy@matela.com.br> |

Safe Haskell | None |

Language | Haskell2010 |

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 _ -> False When 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 ... |