从 haskell 中的用户定义数据类型创建生成器

Creating generators from user defined data types in haskell

我需要一些关于如何为 Foo 数据类型创建随机生成器以使 Boo 列表永不为空的建议?

data Boo = Boo Float Float Float
data Foo = Foo Float Float Float [Boo]

您可以使用 listOf1 函数获取生成非空列表的生成器,并使用它来定义适当的 Arbitrary 实例,例如:

import Test.QuickCheck
import Control.Applicative

instance Arbitrary Boo

instance Arbitrary Foo where
  arbitrary = Foo <$> arbitrary <*> arbitrary <*> arbitrary <*> listOf1 arbitrary