第三章 F# 和 C# 中元组、列表和函数
本章介绍
■声明函数和值
■使用不可变元组和列表
■用递归处理列表
■函数化处理函数
在第二章,我们从宏观上探讨了函数编程中最重要的概念,除了一些用来说明概念的简单示例之外,没有展示任何实际的函数式代码。到目前为止,我们的目标还是为了说明概念之间的关系,以及对编程来说结果完全不同。
在这一章,我们终于开始写函数式的 F# 代码了,但重点关注是能用 C# 很好地解释和说明的示例,深入研究要等到第二部分。
这里简单介绍一下本章的主题:
■值绑定(Value bindings):F# 的这个功能统一了函数与值的声明;我们还会看到在 C# 中不多见的结构,如嵌套函数声明。
■不可变性(Immutability):这是一项普遍原则,即,值一旦初始化后就不能更改;我们将用最简单的函数式数据类型:元组(tuple)来演示。
■列表(Lists):一个很普通,但非常有用的函数式数据类型;像元组一样,它也是不可变的,但还有一个重要特征,它还是递归的(recursive);而最重要的是,我们将学习用递归计算来处理列表。
■模式匹配(Pattern matching):这个功能用于检查数据类型的结构和内容;我们在讨论元组和列表时会介绍。
■函数也是值(Functions as values):把函数值当作其他函数的参数值使用,能够隐藏计算的复杂性;我们将用 F# 和 C# 来实现。
可以看到,我们要学习的功能相当多!通过第二章的介绍,我们对大部分功能已经有了一个很好的概念,因此,通过实践加深理解,对你来说应该不成问题;我们还会用 C# 示例演示F# 代码的运行,这比写大段的文章会更有用。