3.5 第三章小结
在这一章中,我们探讨了基本的函数结构和技术,在实践中的。首先,用 let 绑定声明值和函数,学习了 F# 如何使要用到的概念的数量最小化——从严格的数学观点来看,不可变的值就是一个不带参数值的函数。
接下来,我们看了函数语言中最简单的不可变的数据结构:元组。我们用它来演示如何使用不可变的数据结构。当对不可变的数据结构进行计算时,不能修改已有的实例,但可以通过复制原始值创建一个新的实例,用新的计算值替换那些(原始值)。我们遇到的下一个有趣的不可变的数据类型是列表。使用列表帮助我们探索递归,不论是在如何从一个列表建另一个,还是使用模式匹配来递归处理列表方面。
写相同递归处理时,要在列表上执行的操作,无论何时都会带来不便,因此,我们来看一个机制,使能够使代码更通用,以便它可以用于广泛的类似代码使用情况。在上一章中,我们称此机制为高阶函数。就是说,一个函数可以简单地被参数化,成为提供给另一个函数的参数值。
这一章是作为一个抢先预览,以展示一些最重要的函数技术在行动中,以它们最简单的形式。其中,大多数也可以很好地用 C# 编写。现在,你已经有了对函数编程的直观概念,我们会更详细地审视 F# 的语言和工具,以便你可以开心地使用,并尝试写一些自己的代码。
从这一章的例子是仅仅概述,在这本书后面,我们还要回到在这里提到的所有概念。其他常见的函数数据类型将在第 5 章中讨论,在第 6 章将主要讨论高阶函数,可以使用这些类型。在这两个章中,我们还将看到如何使代码更通用,不仅使用泛型类型,而且使用泛型函数。