【发布时间】:2014-08-24 14:02:18
【问题描述】:
span 函数定义如下。我很好奇 (ys, zs) 是如何与 (x:ys, zs) 模式匹配的,其中已经有一个'x'和一个缺点。我如何相信模式匹配将是一个就地替代,但这让我大吃一惊,让我的下巴掉了下来。这真的很漂亮。
我很好奇是否有任何一本书解释了这个结构以及更多内容(我目前正在阅读 Real World Haskell 第 4 章,想知道这本书或任何其他书是否详细解释了这一点)。对不起,如果我表现得天真,但对我来说,这是一个很好的模式匹配结构,我很想知道更多。
span p [] = ([],[])
span p xs@(x:xs')
| p x = (x:ys,zs)
| otherwise = ([],xs)
where (ys,zs) = span p xs'
【问题讨论】: