我需要一些关于如何为Foo数据类型创建随机生成器的建议,以便Boo列表永远不会为空?
data Boo = Boo Float Float Float
data Foo = Foo Float Float Float [Boo]
答案 0 :(得分:7)
您可以使用listOf1
函数来获取生成非空列表的生成器,并将其用于定义适当的Arbitrary
实例,例如:
import Test.QuickCheck
import Control.Applicative
instance Arbitrary Boo
instance Arbitrary Foo where
arbitrary = Foo <$> arbitrary <*> arbitrary <*> arbitrary <*> listOf1 arbitrary