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;上输入解析错误
为什么会这样?
答案 0 :(得分:5)
在Haskell源文件中,f
等顶级定义不应与let
一起引入 - 只需编写
f [] = []
f ('\n':',':a) = f ('\n' : a)
f (a:b) = a : f b
此外,您需要确保定义中每个子句的左侧在同一列中排列,因为Haskell是缩进感知的。因此,在这种情况下,每个子句中的f
应该位于每行的最开头,如上所述。
请注意,ghci提示符更像您在do
块中的行为,因此let
有效,这在两者之间移动时可能会引起混淆。