我得到一个解析输入错误和'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
答案 0 :(得分:4)
else
的定义中,分支g
也应覆盖。
答案 1 :(得分:4)
您会得到一个语法错误,因为解析器期待看到ViewController
的部分else
上一行 - 而不是另一个变量的定义。每if
需要一个if
在Haskell - 否则将会的值else
是当g
是假
一旦你已经修复了问题,你会得到你的f
声明一个类型错误的原因有两个:在您的do
声明的值不是一元(do
为g
和Map
是取其类型定义了Node value e
的构造函数);和类型的您的Node
和then
不匹配:else部分具有类型else
对于一些m ()
和Monad m
部分有哪个类型{ {1}}是其中的一部分。