使用 2 个选项生成选择自定义数据类型
Generate choose on custom data type with 2 options
我正在努力实现一些非常简单的事情。
我有这种数据类型:
import Test.QuickCheck
import System.Random
data Letter = G | B deriving(Show, Eq, Bounded)
arbitraryLetter :: Gen Letter
arbitraryLetter = choose (G,B)
我正在编译并收到此错误
• No instance for (Random Letter) arising from a use of ‘choose’
• In the expression: choose (G, B)
In an equation for ‘arbitraryLetter’:
arbitraryLetter = choose (G, B)
为什么这不起作用?
我希望能够对此数据类型使用 QuickCheck。
choose
具有类型 Random a => (a, a) -> Gen a
,因此 choose (G, B)
需要一个 Random
实例用于您的 Letter
类型。如果你想从一组值创建一个生成器,你可以使用 elements
代替:
arbitraryLetter :: Gen Letter
arbitraryLetter = elements [G, B]
我正在努力实现一些非常简单的事情。 我有这种数据类型:
import Test.QuickCheck
import System.Random
data Letter = G | B deriving(Show, Eq, Bounded)
arbitraryLetter :: Gen Letter
arbitraryLetter = choose (G,B)
我正在编译并收到此错误
• No instance for (Random Letter) arising from a use of ‘choose’
• In the expression: choose (G, B)
In an equation for ‘arbitraryLetter’:
arbitraryLetter = choose (G, B)
为什么这不起作用? 我希望能够对此数据类型使用 QuickCheck。
choose
具有类型 Random a => (a, a) -> Gen a
,因此 choose (G, B)
需要一个 Random
实例用于您的 Letter
类型。如果你想从一组值创建一个生成器,你可以使用 elements
代替:
arbitraryLetter :: Gen Letter
arbitraryLetter = elements [G, B]