【发布时间】:2017-12-19 23:37:11
【问题描述】:
我需要在我的 Haskell 程序中创建一个任意的实例,我正在创建一副纸牌(它是纸牌类型),而纸牌是纸牌列表,以便制作程序使用的新纸牌一个 mkStdGen 和一个提示种子的数字,以便随机化新牌组。
此套牌需要具有任意实例才能通过 QuickTest 属性测试。
这里有一些代码
data Carta = C (Valor,Naipe) deriving (Eq,Ord)
instance Show Carta where
show (C (v,n)) =show v ++ show n
data Baralho = B [Carta]
instance Show Baralho where
show (B []) = ""
show (B [c]) = show c
show (B (c:cs)) = show c ++ "," ++ show (B cs)
type Mao = [Carta]
baralho40 :: Baralho
baralho40 = B [C (x,y)|y<-[Paus .. Espadas],x<-[As .. Rei]]
baralhar :: StdGen -> Baralho -> Baralho
baralhar g (B baralho) = B $ map snd $ sort $ zip (randomRs (1,(length baralho)^3) g) baralho
【问题讨论】:
-
不错的一副牌...你有什么问题?
-
@WillemVanOnsem 我需要将其实例化为任意以便能够使用 Test.QuickCheck,但我不知道该怎么做
标签: haskell quickcheck