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

我的递归Haskell密码掩码函数报错,+号无法使用应替换为什么?

你可以使用 :(cons 运算符)替代 +,同时修正几处语法错误即可运行:

错误原因说明

  1. Haskell 中的 + 运算符仅支持数值类型的加法运算,不能用于字符、列表/字符串的拼接操作
  2. 你原有代码的 ["*" + password xs] 还有额外的语法问题:
    • 双引号包裹的 "*" 是字符串类型(即长度为1的[Char]),你需要的是单个字符类型的'*'
    • 外层多余的方括号会把结果包装为嵌套列表,和函数声明的返回值[Char]类型不匹配

修复后的递归实现

password :: [Char] -> [Char]
password [] = []
password (x: xs) = '*' : password xs

: 运算符的作用是把左侧的单个元素添加到右侧列表的头部,刚好匹配你的递归逻辑,每一步将当前字符替换为'*'后拼接到剩余字符串的替换结果前。

更简洁的高阶函数实现

你也可以直接用map遍历替换所有字符,代码更精简:

password :: [Char] -> [Char]
password = map (const '*')

两种实现都可以完全满足你给出的所有测试用例。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 10:09:06