{
"$type": "site.standard.document",
"bskyPostRef": {
"cid": "bafyreias7mgl4yoqdoy7f4icznklggrejqfa2pago5w46ohoccqwfhjz6a",
"uri": "at://did:plc:pi6woz4d47bkuws673w2il2r/app.bsky.feed.post/3mjftyg2h5e42"
},
"path": "/t/tinycheck-a-lightweight-enumeration-based-property-testing-library/13914#post_2",
"publishedAt": "2026-04-13T21:26:42.000Z",
"site": "https://discourse.haskell.org",
"textContent": "turion:\n\n> Generators are just streams of values, ordered by complexity (some measure of “size”) of the data.\n\nI 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.",
"title": "Tinycheck: A lightweight enumeration-based property testing library"
}