Copyright | (c) 2015-2020 Rudy Matela |
---|---|
License | 3-Clause BSD (see the file LICENSE) |
Maintainer | Rudy Matela <rudy@matela.com.br> |
Safe Haskell | Safe-Inferred |
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 ... |