Haskell常见报错及原因

前言

  1. haskell报错FileName.hs: 62: 10的错误会出现在FileName.hs的第62行及的第十个10字符处。
  2. 本文的balabala指的是任意东西。
  3. 记得变量名/函数名用小写驼峰法functionName,data type名用大写驼峰法DataType

Couldn’t match excepted type ‘xxx’ with actual type ‘yyy’

同义报错Couldn't match type 'xxx' with actual type 'yyy'

错误原因:数据类型应该是xxx但是你输入的是yyy

一般会出现在recursion的case expression里:_ -> balabala

Variable not in scope

错误原因一:未定义该变量名
错误原因二:haskell把function name当作variable name输入了,大概是少括号了

注意:记得(x:xs)最好都加括号,不然也可能有Variable not in scope的报错

Non-exhaustive patterns in function balabala

同义报错Non type-variable argument in the constraint: balabala

错误原因:没有输入的值符合的case,recursion里面debug会蛮困难

Parse error

Parse error (possibly incorrect indentation or mismatched brackets)

错误原因:缩进错了,或者少单个括号了。也可能是上一行少括号了。

Parse error in pattern: balabala

一般出现在functionName x:xs,改成functionName (x:xs)就好了。也可能是case/guarded缺胳膊少腿。

记得(x:xs)最好都加括号,不然也可能有Variable not in scope的报错

Parse error on input ‘|’ / ‘->’ / 变量名

错误原因:guarded/case expression写错了,或者缩进错了。或者加个括号

解决办法:检查一下‘|’前面有没有写过=,检查case是不是少了of,检查缩进是不是两个空格。

The constructor ‘balabala’ should have x arguments, but has been given x

错误原因:product data type少变量了

Ambiguous occurence ‘balabala’

错误原因:‘balabala’定义了多次,删一个就好了。如果一个是import from xxx,就说明在xxx文件中有另一个定义,当前文件也有一个定义。

Warning: [-Wincomplete-pattern]

case需要_ -> balabala

guarded需要otherwise = balabala

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

失眠软糖12

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值