小编Fra*_*aus的帖子

为什么我不能这样写这个函数?

我正在攻读"功能编程入门"考试.这是我遇到的问题之一:

"以下数据类型用于表示一手牌:

data Suit = Hearts | Clubs | Diamonds | Spades                           
  deriving Eq

data Rank = Numeric Int | Jack | Queen | King | Ace                      
   deriving Eq

data Card = NormalCard Rank Suit | Joker   
  deriving Eq
Run Code Online (Sandbox Code Playgroud)

定义一个函数

countAces:: [Card] -> Int
countAces = undefined
Run Code Online (Sandbox Code Playgroud)

其中countAces返回给定手牌中的牌数或者是aces或jokers.例如,如果手中有三个A和两个笑话,答案将是五个."

所以我想我会这样写:

countAces:: [Card] -> Int
countAces []                               = 0
countAces (c:cs) | c == (NormalCard Ace _) = 1 + countAces (cs)
                 | c == Joker              = 1 + countAces (cs)
                 | …
Run Code Online (Sandbox Code Playgroud)

haskell functional-programming

1
推荐指数
2
解决办法
136
查看次数

标签 统计

functional-programming ×1

haskell ×1