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 4 case distinctions in a single line.

Please see Test.LeanCheck.Function.Show.EightLines for an alternative that shows functions as up to 8 case distinctions, one per 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 single-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; ... |