Tinycheck: A lightweight enumeration-based property testing library
Haskell Community [Unofficial]
April 13, 2026
turion:
Generators are just streams of values, ordered by complexity (some measure of “size”) of the data.
I think this is the right choice, yes. SmallCheck migrated from this to streams parametrized by a monad (and interleaving implemented via LogicT) between releases 0.6.2 and 1.0, but I don’t know anyone making use of this flexibility. While in theory one can do some cool stuff, e. g., turning SmallCheck into QuickCheck with instance MonadRandom m => Stream m Foo, I’ve never seen it happening in practice, and performance consequences of such generalization are obvious.
Discussion in the ATmosphere