我过去曾涉足过 Haskell,最近又认真研究了它,我正在阅读真实世界的 Haskell。他们所展示的一些例子,我还没有理解。这样的:
myLength [] = 0
myLength (x:xs) = 1 + myLength (xs)
我不明白这是如何工作的,真正添加的 1 是什么?递归如何返回可以添加的东西?我不明白。
在这里我们有这个:
splitLines [] = []
splitLines cs =
let (pre, suf) = break isLineTerminator cs
in pre : case suf of
('\r':'\n':rest) -> splitLines rest
('\r':rest) -> splitLines rest
('\n':rest) -> splitLines rest
_ -> []
isLineTerminator c = c == '\r' || c == '\n'
这是如何工作的,什么是 pre 真正被附加的?我不明白 case 表达式的结果是如何可以连接 pre 的。也许我只是需要有人详细解释这些功能的评估。我一定错过了一些非常重要的东西。
提前致谢!
编辑:我知道,这是复制粘贴失败。对不起。
编辑2:似乎我的困惑是这些功能实际上是/返回/我现在已经全部解决了。谢谢各位大神解答,终于成功了!我很感激!