我是haskell的新手。我遇到了这个问题:
Assignment12.hs:5:12:不在作用域中:数据构造函数` `Suit‘
Assignment12.hs:5:18:不在作用域中:数据构造函数‘`Rank’
Assignment12.hs:6:11:不在作用域中:数据构造函数‘`Rank’
Assignment12.hs:7:11:不在作用域中:数据构造函数‘`Rank’
Assignment12.hs:8:11:不在作用域中:数据构造函数` none‘失败,模块已加载:无。
这是我的代码:
data Suit = Clubs | Diamonds | Hearts | Spades deriving (Show, Eq)
data Rank = Jack | Queen | King | Ace | Num Int deriving (Show, Eq)
type Card = (Suit, Rank)
cardValue :: Card -> Int
cardValue (Suit, Rank)
| Rank == Ace = 11
| Rank == Ace = 11
| Rank == Jack = 10
| Otherwise = Num我真的很感谢你的帮助。谢谢
发布于 2015-02-07 18:37:29
在haskell中,变量名必须以小写字母开头。任何大写字母都会被编译器解释为一个Data Constructor,这就是为什么你会得到这个错误。
在定义cardRank时,变量(suit, rank)必须以小写字母开头,代码才能编译。
这应该是可行的
data Suit = Clubs | Diamonds | Hearts | Spades deriving (Show, Eq)
data Rank = Jack | Queen | King | Ace | Num Int deriving (Show, Eq)
type Card = (Suit, Rank)
cardValue :: Card -> Int
cardValue (suit, rank)
| rank == Ace = 11
| rank == Ace = 11
| rank == Jack = 10
cardValue (suit, Num x) = xhttps://stackoverflow.com/questions/28381055
复制相似问题