我在Haskell中创建了两个对象,主要是一张王牌和手中的牌。
trump = Card Spade Two
myhand = [Card Diamond Three, Card Spade Two]
data Card = Card Suit Rank
retrieveSuit :: Card -> Suit
retrieveSuit (Card suit _) = suit
比较王牌和手牌的花色
看看吧
但我在特朗普和我的手的两个论点之间进行了问题映射,因为我只知道如何映射一个论点,而不知道如何映射两个论点。
checkTrump :: Card -> [Card] -> Bool
checkTrump trump myhand = (map retrieveSuit myhand) (retrieveSuit trump) if trump == myhand then True else False
当我跑的时候,我得到了错误
error: parse error on input `if'
输出真值
因为手中的牌里确实有一个黑桃,这也是王牌的套牌。
编辑:
更新第二个场景。如果我把手中和特朗普有同样花色的牌还回去,而不是说是真是假:
checkTrump :: Card -> [Card] -> Card
checkTrump trump myhand = filter ((cardSuit trump) `elem` (map cardSuit myhand))