我得到一个解析输入错误的和“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
在else
的定义g
部门也应包括在内。
你得到一个解析错误,因为解析器期待看到else
的上一行的if
部分 - 而不是另一个变量的定义。每if
需要在Haskell的else
- 否则你会g
的值是当f
是假的?
一旦你已经修复了问题,你会得到你的do
声明类型错误的原因有两个:在您的do
声明的值不是一元(g
是Map
和Node value e
是哪个类型定义Node
构造函数);和类型的then
和else
的不匹配:else部分有一些m ()
键入Monad m
和then
部分有哪个类型Node
是的一部分。