【发布时间】:2021-01-02 00:13:06
【问题描述】:
我正在学习使用 F# 的函数式编程的大学课程,但我一直对以下程序的逻辑流程感到困惑。有人愿意解释一下吗?
let rec unzip = function
| [] -> ([],[])
| (x,y)::rest ->
let (xs,ys) = unzip rest
(x::xs,y:ys);;
所以这个程序应该获取一个对的列表,并输出一对列表。
[(1,'a');(2,'b')] -> ([1;2],['a','b'])
在我看来,就像参数(列表)为空的基本情况一样,给出了输出的格式,但我不明白第三行和第四行是如何评估的。
let (xs,ys) = unzip rest
(x::xs,y:ys);;
【问题讨论】:
标签: functional-programming f# unzip