{
  "$type": "site.standard.document",
  "bskyPostRef": {
    "cid": "bafyreihmk6ko3arkbmwzxqsik77jblsukh27bby7ibz2b4o7olaxibbhc4",
    "uri": "at://did:plc:pi6woz4d47bkuws673w2il2r/app.bsky.feed.post/3micuykzncm22"
  },
  "path": "/t/why-not-use-smallcheck/13860#post_6",
  "publishedAt": "2026-03-30T22:38:22.000Z",
  "site": "https://discourse.haskell.org",
  "tags": [
    "@turion"
  ],
  "textContent": "@turion the problem is not the raw performance of inputs generation, the problem is that for a given depth their number grows exponentially. So with default depth 5 a record with 6 fields will generate roughly 5^6 test cases. And if your property takes two of such records, it’s 5^12, almost a quarter of a billion of them. So at this point you start to micromanage `smallcheck` tweaking depth here and there (which is already annoying) and end up setting depth of 2 for such test. It’s still at least 2^12 test cases, which is probably okayish, but you are barely testing anything with such depth, right?..\n\nImagine testing a property on strings. What would you like `smallcheck` to do? Should it limit itself to enumerating `['a'..]` for small depth? In such case it would never generate even something very simple, like a string with a space. Or a digit. Or an upper case letter. `quickcheck` is so much better: in a matter of microseconds it will throw all kinds of inputs on your test property.",
  "title": "Why not use smallcheck?"
}