let绑定中的解析错误:缺少必需的'in'

时间:2016-01-06 01:53:15

标签: haskell functional-programming

我正在解决一个问题,需要将完整的二叉树分割为匹配的二叉树和叶子树,例如:

splitFTree :: (FTree a b)  -> (BTree a, LTree b)

其中

data FTree a b = Leaf b | No a (FTree a b) (FTree a b)
data BTree a = Empty | Node a (BTree a) (BTree a)
data LTree a = Tip a | Fork (LTree a) (LTree a)

我对此的解决方案是下一个代码:

splitFTree :: (FTree a b)  -> (BTree a, LTree b)
splitFTree (Leaf a) = ( Node a Empty Empty , Tip a )
splitFTree (No a e d) = let (b1,l1) = splitFTree e
                            (b2,l2) = splitFTree d 
                        in  (Node a b1 b2 , Fork l1 l2) 

使用GHCI进行编译时出现以下错误,我不知道我的错误在哪里:

solucaoficha9.hs:89:25:
parse error in let binding: missing required 'in'

有人可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

我已经发现了答案,因为letin语句必须由代码上的相同TAB列排成一行,SPACE衬里是不够的。