【问题标题】:Expecting a different type期待不同的类型
【发布时间】:2014-05-11 09:08:28
【问题描述】:

当我在 Haskell 中编译我的代码时,我得到了这个:

Couldn't match type '[Char]' with 'Car a1 [Char]'
Expected type: [Car a1 [Char]]
Actual type: [[Char]]

我是 Haskell 的新手,不知道这意味着什么。在过去的 45 分钟里,我一直在寻找答案,但在我的情况下没有找到任何帮助。

这是第一个错误:

Couldn't match expected type '[[Char]]'
with actual type  'Car [Char] t0'
In the pattern: Leaf a
In an equation for 'evaluation': evaluation (Leaf a) = a

这与它有问题的代码行有关。如果您希望我发布更多信息,请告诉我,谢谢。

evaluation (Leaf a) = a
evaluation (Breakpoint "j" []) = 0
evaluation (Breakpoint "j" x:xs) = evaluation (x) + evaluation (Breakpoint "j" xs)

【问题讨论】:

  • 你能发布你试图编译的代码吗?
  • 请发布具有构造函数LeafBreakpoint 的类型的定义,如果可以,请发布evaluation 的类型签名。
  • 我发现了问题所在。我正在创建自己的 sum 和 product 函数,它们已经在标准函数中声明并给了我这个错误。当我尝试更正代码时出现此错误。谢谢大家的时间。

标签: haskell types casting


【解决方案1】:

你在某处有一个函数想要(或认为它想要)Car a1 String 的列表,但它正在接收String 的列表。如果没有看到一些实际代码,就不可能知道如何解决这个问题,但一个好的起点是向你的函数添加类型注释,这样你就可以看到第一个错误——现在你看到的是在 Haskell 时最终会发生的事情类型推断最终放弃了你的代码。

【讨论】:

    猜你喜欢
    • 2022-08-22
    • 2017-10-15
    • 2020-07-21
    • 2018-06-11
    • 1970-01-01
    • 2020-07-06
    • 1970-01-01
    • 1970-01-01
    • 2013-07-21
    相关资源
    最近更新 更多