【发布时间】:2018-12-16 00:42:30
【问题描述】:
我是 Haskell 的初学者,我不明白这段代码 sn-p 是如何工作的。我不明白 'let' 声明中发生了什么,在调用 'split xys' 之后 (ls1,ls2) 会得到什么?
split :: [(a, b)] -> ([a], [b])
split [] = ([], [])
split ((x, y):xys) = let (ls1, ls2) = split xys
in
(x:ls1, y:ls2)
让我们用一个简短的例子来解释第一次递归迭代:
如果这是调用:split [(1,2),(3,4)]split xys 在第一次迭代中返回什么?由于“让”,(ls1,ls2)会发生什么?
【问题讨论】:
-
Split 返回一个元组,let 通过模式匹配将变量绑定到元组的元素。
-
是不是递归让你困惑?
标签: haskell functional-programming