1

我是 Haskell 的新手,我遇到了一个非常奇怪的错误:

insertion el [] = [el]
insertion el (x:xs) = | el < x = el:x:xs
                      | otherwise = x:insertion el xs

这给了我这个错误,在管道之后的字符的第二行:输入'|'上的解析错误 失败,加载模块:无。

没看懂,求指点 提前致谢 :)

4

1 回答 1

5

在函数定义中使用守卫(管道符号)时,不要在函数名和参数后面加上等号。它应该这样写:

insertion el [] = [el]
insertion el (x:xs)
   | el < x    = el:x:xs
   | otherwise = x:insertion el xs

第一个后卫不需要在下一行,但这往往是一般的风格。

于 2013-03-16T19:45:54.587 回答