在输入`='上输入解析错误错误

时间:2014-06-22 10:15:29

标签: haskell

import Data.Char (digitToInt)

let f [] = []
     f ('\n':',':a) = f ('\n' : a)  
     f (a:b) = a : f b

main :: IO ()

main = do
     ln<-getLine
     f ln
     print dp

在输入`=&#39;上输入解析错误

为什么会这样?

1 个答案:

答案 0 :(得分:5)

在Haskell源文件中,f等顶级定义不应与let一起引入 - 只需编写

f [] = []
f ('\n':',':a) = f ('\n' : a)
f (a:b) = a : f b

此外,您需要确保定义中每个子句的左侧在同一列中排列,因为Haskell是缩进感知的。因此,在这种情况下,每个子句中的f应该位于每行的最开头,如上所述。

请注意,ghci提示符更像您在do块中的行为,因此let有效,这在两者之间移动时可能会引起混淆。