首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

函数式编程思想概论(2)函数

函数式编程思想概论(2)函数

函数我们先从数学中的函数开始谈起。数学中的函数是输入元素的集合到可能的输出元素的集合之间的映射关系,并且每个输入元素只能映射到一个输出元素。比如典型的函数 f(x)=x*x        把所有实数的集合映射到其平方值的集合,如 f(2)=4 和 f(-2)=4。函数允许不同的输入元素映射到同一个输出元素,但是每个输入元素只能映射到一个输出元素。比如上述函数        f(x)=x*x 中,2 和-2 都映射到同一个输出元素        4。这也限定了每个输入元素所对应的输出元素是固定的。每个输入元素都必须被映射到某个输出元素,也就是说函数可以应用到输入元素集合中的每个元素。
用专业的术语来说,输入元素称为函数的参数(argument)。输出元素称为函数的值(value)。输入元素的集合称为函数的定义域(domain)。输出元素和其他附加元素的集合称为函数的到达域(codomain)。存在映射关系的输入和输出元素对的集合,称为函数的图形(graph)。输出元素的集合称为像(image)。这里需要注意像和到达域的区别。到达域还可能包含除了像中元素之外的其他元素,也就是没有输入元素与之对应的元素。
图 1 表示了一个函数对应的映射关系(图片来源于维基百科上的 )。输入集合 X        中的每个元素都映射到了输出集合 Y 中某个元素,即 f(1)=D、f(2)=C 和 f(3)=C。X 中的元素 2 和 3 都映射到了 Y 中的 C,这是合法的。Y 中的元素 B 和        A 没有被映射到,这也是合法的。该函数的定义域是 X,到达域是 Y,图形是 (1, D)、(2, C) 和 (3, C) 的集合,像是 C 和 D 的集合。
图 1. 函数的映射关系我们通常可以把函数看成是一个黑盒子,对其内部的实现一无所知。只需要清楚其映射关系,就可以正确的使用它。函数的图形是描述函数的一种方式,也就是列出来函数对应的映射中所有可能的元素对。这种描述方式用到了集合相关的理论,对于图        1 中这样的简单函数比较容易进行描述。对于包含输入变量的函数,如 f(x)=x+1,需要用到更加复杂的集合逻辑。因为输入元素 x        可以是任何数,定义域是一个无穷集合,对应的输出元素集合也是无穷的。要描述这样的函数,用我们下面介绍的 λ 演算会更加直观。
返回列表