使用2个选项生成自定义数据类型的选择

时间:2018-11-24 13:12:29

标签: haskell quickcheck

我正在尝试实现非常简单的目标。 我有这种数据类型:

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。

1 个答案:

答案 0 :(得分:1)

choose的类型为Random a => (a, a) -> Gen a,因此choose (G, B)的{​​{1}}类型需要一个Random实例。如果要根据一组值创建一个生成器,可以使用Letter代替:

elements