Haskell中的模糊解析错误消息

时间:2014-12-30 03:38:26

标签: haskell io whitespace

承诺在冬假期间学习Haskell。我编写了一个程序,它接受单词,将它们放入二进制搜索树,然后搜索该树。这是处理获取单词并将其发送以进行搜索的功能。 GHCi告诉我行上有一个解析错误

putStrLn $ search_term ++ " in tree: " ++ (show result)

完整的错误讯息: main.hs:40:30: parse error on input ‘putStrLn’(40是上面一行的行号)

但是,这一行与它上面的let表达式在同一列中开始,因此我不确定解析错误的来源,并且错误消息没有任何帮助。更重要的是,我已经尝试检查它上面的行上的空白,据我所知,它具有相同类型的空白。我猜这是我不熟悉的Haskell重要空白的一些烦人的部分。有任何想法吗? (以下代码)

search_tree :: Tree String -> IO ()
search_tree t = do
                    putStrLn "Searching:"
                    search_term <- getLine
                    putStrLn search_term
                    if not_empty search_term
                    then let result = in_tree search_term t
                         putStrLn $ search_term ++ " in tree: " ++ (show result)
                         search_tree t
                    else return ()

not_empty :: String -> Bool
not_empty = \s -> length s /= 0

1 个答案:

答案 0 :(得分:3)

@bheklilr的评论解决了这个问题。我应该写的

then do
       let result = ...

立即解决了这个问题。谢谢!