我需要一些Haskell函数的实现方面的帮助,该函数应该进行扑克牌匹配 - 即"黑桃王牌","钻石2","杰克之心".请注意,"s"的复数不能是Suit中构造函数名称的一部分.
参考:http://en.wikipedia.org/wiki/Standard_52-card_deck#Rank_and_color
到目前为止,这是我的代码:
data Suit = Club | Diamond | Heart | Spade
deriving (Show, Ord)
data Rank = Ace | Zwei | Drei | Vier | Fuenf
| Sechs | Sieben | Acht | Neun | Zehn
| Jack | Queen | King
deriving (Show, Enum, Read, Eq, Ord)
data Card = Card {rank :: Rank,
suit :: Suit}
deriving (Show, Read, Ord)
Run Code Online (Sandbox Code Playgroud)
所需的函数应为"match :: Card - > String"类型,生成类似"Ace of Diamond +"s""的消息
例如,如何定义已存在的数据类型[Vegetables]的小写常量"corn"?
我试过用
type corn = [Vegetables]
Run Code Online (Sandbox Code Playgroud)
但它产生了"格式错误的类型和/或类声明"...
我想收到一些建议.提前致谢.
如何创建这样的列表理解给出
[(i,j) | i <- [1..4], j <- [1..4]] yields the following:
[(1,1),(2,1),(3,1),(4,1),(2,2),(3,2),(4,2),(3,3),(4,3),(4,4)]
Run Code Online (Sandbox Code Playgroud)
即列出关于j的所有组合?
PS.交换"i"和"j"的地方不是我想要的解决方案.