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