首先这是家庭作业,所以请不要放弃太多!我需要理解这一点,而不是复制别人的代码。
我必须创建一副牌。而且我已经获得了可以使用的代码,但我无法让它们工作。我的意思是我可以在 2012-2013 年的演出中创造出最好的牌组,但这对我没有帮助,因为我需要使用我们提供的代码,而且我不能更改它。
(我使用 Read 和 Enum 来创建一副纸牌,看起来很棒,但我不能完成这个任务)
最后我收到一些错误消息,你可以看到。
import Test.QuickCheck
--DECK OF CARDS
data Suit = Hearts | Spades | Diamonds | Clubs
deriving (Eq, Show)
data Card = Card Rank Suit
deriving (Eq, Show)
data Rank = Numeric Integer | Jack | Queen | King | Ace
deriving (Eq, Show)
instance Arbitrary Rank where
arbitrary = frequency [ (1, return Jack)
, (1, return Queen)
, (1, return King)
, (1, return Ace)
, (9, do n <- choose (2, 10)
return (Numeric n))
]
--MY OWN CODE
type Deck = [Card]
deck :: Deck
deck = [Card v s | v <- arbitrary Rank, s <- Suit]
当我尝试加载它时,我得到:
Prelude> :l test4
[1 of 1] Compiling Main ( test4.hs, interpreted )
test4.hs:31:35: Not in scope: data constructor `Rank'
test4.hs:31:46: Not in scope: data constructor `Suit'
Failed, modules loaded: none.
我哪里错了?我错过了一些基本的东西吗?如果是这样,我在哪里阅读它?
我将不胜感激任何和所有的建议和想法!