You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用递归与模式匹配实现Haskell的countA函数统计a/A字符数

Haskell countA 函数实现方案

需求说明

实现类型为countA :: [Char] -> Int的Haskell函数,统计输入字符串中a和A两类字符的出现总次数。

约束要求

  • 仅允许使用递归和模式匹配实现,不得使用任何导入的外部函数
  • 不可使用if-then-else语句实现

核心语法说明

针对你不熟悉的列表模式匹配用法,核心规则如下:

  • 空列表可直接用[]匹配
  • 非空列表可以用(首元素:剩余元素列表)的结构匹配,比如字符串"abc"可以匹配为('a':"bc")

完整实现代码

countA :: [Char] -> Int
countA [] = 0
countA ('a':rest) = 1 + countA rest
countA ('A':rest) = 1 + countA rest
countA (_:rest) = countA rest

实现逻辑说明

  • 第一个分支匹配空列表:空字符串中没有任何字符,a/A的计数为0,作为递归终止条件
  • 第二个分支匹配首字符为小写a的情况:当前字符符合计数要求,总计数为1加上剩余字符串的统计结果
  • 第三个分支匹配首字符为大写A的情况:逻辑和小写a分支一致
  • 第四个分支用通配符_匹配所有其他字符:当前字符不符合要求,总计数直接等于剩余字符串的统计结果

示例验证

运行题目给出的测试用例,结果符合预期:

  • countA "Appleapplet" 返回值为2,满足countA "Appleapplet" == 2
  • countA "Nietzsche" 返回值为0,满足countA "Nietzsche" == 0

内容的提问来源于stack exchange,提问作者BeanieBarrow

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 15:18:04