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

Haskell递归函数累加器操作报错,求解析错误原因

错误原因分析

在Haskell中,列表构造运算符:的语法规则是**单个元素:列表**,它的作用是将单个元素添加到一个列表的头部,运算符左侧必须是单个元素,右侧必须是列表。

你代码第4行的(acc:x)违反了这个规则:acc是一个列表(初始调用时传入的是[],后续递归中也始终是列表类型),而x是单个元素。GHC会因为类型不匹配抛出错误——它期望:左侧是单个元素,但你传入了一个列表。

如果要修正这个语法问题,只需要把acc:x改成x:acc,这样就符合:的构造规则了:

start list = start' list []
    where
        start' (x:[]) acc = acc
        start' (x:xs) acc = start' xs (x:acc)

(注:这个修正后的代码会返回原列表除最后一个元素的逆序,如果你需要正序结果,还需要对acc做反转操作,但这不属于你当前提问的错误范畴)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 18:39:55