承诺在冬假期间学习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
答案 0 :(得分:3)
@bheklilr的评论解决了这个问题。我应该写的
then do
let result = ...
立即解决了这个问题。谢谢!