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

Haskell 使用2个选项在自定义数据类型上生成选择,haskell,quickcheck,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 u

我正在努力实现一些非常简单的事情。 我有以下数据类型:

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)
为什么这不起作用?
我希望能够在此数据类型上使用快速检查。

choose
具有类型
Random a=>(a,a)->Gen a
,因此
choose(G,B)
需要一个
Random
实例用于
字母类型。如果要从一组值创建生成器,可以使用
元素

arbitraryLetter :: Gen Letter
arbitraryLetter = elements [G, B]

谢谢,我如何生成1并打印到控制台?我尝试运行arbitraryLetter,但出现了一个错误:•在交互式GHCi命令的stmt中使用“print”时没有出现(Show(Gen Letter))的实例:printit@Eyzuky-您可以在ghci中使用
sample
sample arbityletter