非空 UUID 的任意实例

Arbitrary instance for non-null UUID

我在为某些具有 UUID 字段的记录类型创建 Arbitrary 实例时遇到问题。智能构造函数确保 UUID 不能为空。是否有一种惯用的方法来修改 Test.QuickCheck.Instances.UUID 中的 UUID Arbitrary 实例,使其不生成空值 - 也就是说,生成器不应生成 00000000-0000-0000-0000-000000000000?

您需要的关键部分是 suchThat。当您的实例调用 arbitrary 来获取 UUID 时,请改为调用 arbitrary `suchThat` (not . Data.UUID.Types.null)。此外,如果您的类型定义了 shrink,则在收缩 UUID 时,在收缩列表中执行 filter (not . Data.UUID.Types.null)