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

Haskell如何去除menu函数错误输出中Char参数的多余单引号

问题原因

Haskell的show函数处理Char类型值时,会默认在字符两侧包裹单引号,例如show 'd'的返回值是字符串"'d'",这就是输出中多余单引号的来源。同时原有代码的错误信息拼接缺少右括号和后续文本的空格,也会和测试用例预期不匹配。

解决方案

因为menu函数的第一个参数明确是Char类型,直接将字符转为单元素字符串即可,无需调用show。修改错误分支的拼接逻辑:

  1. 把show x替换为[x]:[x]是长度为1的Char列表,也就是只包含字符x的字符串,不会额外生成单引号
  2. 在右括号后补充空格,匹配测试用例的预期格式
修改后的完整menu函数代码
menu :: Char -> [a] -> Either String [[a]]
menu 'p' l = Right (prefixes l)
menu 's' l = Right (suffixes l)
menu x _ = Left ("(" ++ [x] ++ ") is not supported, use (p)refix or (s)uffix")
验证效果

修改后调用menu 'd' [1,2]返回的Left值内容完全符合testMenuC的预期:"(d) is not supported, use (p)refix or (s)uffix"


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 21:24:00