为什么在Haskell中出现解析输入错误

时间:2019-02-02 18:19:31

标签: haskell

我得到一个解析输入错误和'e'。为什么是这样?也修复了我的缩进

if not(true)
    then do g
            Node value e
    else return()
where
    f = false
    g = if f then Map.delete c children 
    e = Map.insert c (Node Nothing children) children

2 个答案:

答案 0 :(得分:4)

else的定义中,分支g也应覆​​盖。

答案 1 :(得分:4)

您会得到一个语法错误,因为解析器期待看到ViewController的部分else上一行 - 而不是另一个变量的定义。每if需要一个if在Haskell - 否则将会的值else是当g是假

一旦你已经修复了问题,你会得到你的f声明一个类型错误的原因有两个:在您的do声明的值不是一元(dogMap是取其类型定义了Node value e的构造函数);和类型的您的Nodethen不匹配:else部分具有类型else对于一些m ()Monad m部分有哪个类型{ {1}}是其中的一部分。