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

Haskell遍历字符串的text函数报Non-exhaustive patterns异常如何解决?

错误原因

你定义的text函数仅匹配了非空字符串的模式(x:xs),缺少空字符串[]的匹配分支,这就是Non-exhaustive patterns报错的根源。
你代码里的守卫条件完全无效:只要成功匹配到(x:xs)模式,xs的长度最小为0,length xs >= 0的判断永远成立,otherwise分支永远不会被执行。当递归遍历到字符串末尾时,会调用text [],此时没有对应的匹配逻辑,就会抛出非穷尽模式异常。

修复代码

补充空字符串的匹配分支即可,冗余的守卫可以直接删除:

text :: String -> String
text [] = ""
text (x:xs) = (func x morse) ++ " " ++ text xs

如果你不需要结果末尾多出来的空格,可以再调整下非空单字符的分支逻辑:

text :: String -> String
text [] = ""
text [x] = func x morse
text (x:xs) = (func x morse) ++ " " ++ text xs

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 00:09:01