<div dir="ltr"><div>Hello Haskell Café,</div><div><br></div><div>A new version of <a href="https://hackage.haskell.org/package/leancheck">LeanCheck</a> is out (<a href="https://hackage.haskell.org/package/leancheck">v1.0.0</a>).  LeanCheck is a property testing library (like QuickCheck) that tests values enumeratively.</div><div><em><br></em></div><div><em>Example.</em>  Here is a simple example of LeanCheck in action showing that
sorting is idempotent and list union is not commutative:</div><div>

<pre><code>> import Test.LeanCheck
> import Data.List (sort, union)

> check $ \xs -> sort (sort xs) == sort (xs::[Int])
+++ OK, passed 200 tests.

> check $ \xs ys -> xs `union` ys == ys `union` (xs::[Int])
*** Failed! Falsifiable (after 4 tests):
[] [0,0]
</code></pre>

<p>LeanCheck works on all types that are instances of the Listable typeclass
and is able to derive instances automatically using either Template
Haskell or GHC.Generics.  See <a href="https://hackage.haskell.org/package/leancheck/docs/Test-LeanCheck.html" target="_blank">LeanCheck’s Haddock documentation</a> for more
details.  LeanCheck is compatible with <a href="https://hackage.haskell.org/package/hspec-leancheck">Hspec</a>, <a href="https://hackage.haskell.org/package/tasty-leancheck">Tasty</a> and <a href="https://hackage.haskell.org/package/test-framework-leancheck">test-framework</a>.<br></p><p><i>What's new?</i>  Version 1.0.0 signalizes stability in the API.  LeanCheck has not actually changed much in the past couple of years and there are no significant differences between the early 0.9 series.</p><p><i>Installing.</i>  You can find LeanCheck on <a href="https://hackage.haskell.org/package/leancheck">Hackage</a> or <a href="https://github.com/rudymatela/leancheck">GitHub</a>.  It is also tracked on <a href="https://www.stackage.org/package/leancheck">Stackage</a>.  You can install it with:</p><p style="margin-left:40px"><span style="font-family:monospace">$ cabal install leancheck</span></p><p><font color="#888888">–</font> Rudy<br></p></div><div><br></div></div>