第二章 函数编程的核心概念

第二章函数编程的核心概念

本章介绍

■了解概念和基础

■不可变数据编程

■函数式代码的推论

■函数式值和数据类型

如果你问三个函数程序员,什么是函数范式最基本的方面,很可能有三个不同的答案。原因是函数编程已经存在很长时间了,各种不同的编程语言应用范围很广泛;每种语言强调的重点不同,但对于其他的语言来说,可能并不重要;但其中的大部分概念在所有的函数式语言中都有所表现。

本章的中央部分侧重于这些共同的概念,探讨函数式程序员工具集的基本特征和技术。我们将宏观地研究这些概念,你将看到如何组合起来,形成连续的方式解决问题。

我们首选讨论函数式程序如何表示、改变程序状态。在面向对象编程中,状态由对象承载,而在函数编程中,函数和数据类型担趣了这个关键角色;接下来,我们会看到支持声明式编程风格的语言功能,我们在第一章曾介绍过;最后,我们将讨论类型,看类型是如何帮助验证程序正确性的。这个方面不是所有函数语言都支持的,但却是许多语言的核心(包括 OCaml、F# 和 Haskell)。这种类型检查非常先进,在许多方面不同于 C# 中使用过的。

我们还不会过多地进行编程,只是大致了解一些主要概念,以及有关函数程序的更好感觉。补充材料“接下来本章讲什么?”给出了本章结构的概览。我们在第一章讨论过一些概念,但只关注结论,在本章,我们会分析其原理。

接下来本章讲什么?

第一章,我们关注两个概念:不可变性和声明式风格,这里,我们将介绍一些使其成为可能的语言功能;还将讨论类型,这是这本书中的另一个基本概念。

在 2.1 节,我们将首先讲一点函数编程的题外话,探讨一下其数学背景。阅读这一节不是必须的,但可能很有意义,因为它说明了许多概念的源头;之后,将回到更具体的函数编程,讨论不可变的数据结构,以及如何用来写程序(2.2.3 节);在 2.3.2 节,我们先看一下用函数语言写声明式代码的基本功能,比如高阶函数(higher-order function);我们还会看到,在 F# 中,类型如何防止许多常见的编程错误(2.4.4节)。

这一章我们关注函数编程的概念。首先探究其理论基础,会忽略所有的细节,使用一个简单的示例来解释核心概念。

第二章 函数编程的核心概念

时间: 2024-10-11 12:27:01

第二章 函数编程的核心概念的相关文章

第二章 Docker的核心概念和安装

2.1核心概念 Docker镜像(Image)类似于虚拟机镜像,可以将它理解为一个面向Docker引擎的只读模板,包含了文件系统. 2.2安装Docker Docker支持在主流的操作系统平台上使用,包括Ubuntu.CentOS.Windows以及MacOS系统等.这里我们重点介绍在CenOS系统下如何安装Docker.如何启动Docker. CentOS Docker支持CentOS6及以后的版本. 对于CentOS6系统可使用EPEL库安装Docker,命令如下: $ sudo yum i

spring揭秘 第二章 ioc的基本概念

作者:鹿丸不会多项式  出处:http://www.cnblogs.com/hechao123   转载请先与我联系. 在看ico概念之前,先想一下我们平常需要依赖某个类时会怎么做? 无非是在要用到的地方写如下代码: Person person = new Person(); //然后就可以用person对象来获取Person类提供的服务了 person.say("hellow Ioc!"); 先不说这样做有什么不好,想一下我们的目的只是想调用person的说话服务而已,每次调用前都需

源码-PL/SQL从入门到精通-第二章-PL/SQL基本概念-Part 1

随书附带的源码没有序号,部分有bug,调试过程中一并更正. --代码2.1 使用书序结构计算员工薪资 DECLARE v_sal1 NUMBER; v_sal2 NUMBER; v_sumsal NUMBER; BEGIN SELECT sal INTO v_sal1 FROM emp WHERE empno = &empno1; SELECT sal INTO v_sal2 FROM emp WHERE empno = &empno2; v_sumsal := v_sal1 + v_sa

Node.js学习(第二章:node核心模块--fs)

前言 Node.js中赋予了JavaScript很多在浏览器中没有的能力,譬如:文件读写,创建http服务器等等,今天我们就来看看在node中怎样用JavaScript进行文件的读写操作. 读文件 我们在data文件夹下新建一个hello.txt,并且在里面写入:hello, node.js!! ,如图: 我们在hello.txt同级目录下创建一个hello.js文件,我们在这个js文件中利用Node提供的文件操作API, 读取hello.txt文件中的内容. node中对文件相关的操作需要依赖

2016.9.21 鸟哥私房菜服务器篇-第二章网络基础-总结

第二章-网络的基本概念 2.1网络 操作系统很多,比如windows/linux/os X等,这么多的操作系统(不同国家的人)如何进行网络沟通(语言交流)呢? 制定共同的标准.然后在你的系统里提供可以加入该标准的程序代码. 网络是跨平台的. 2.1.1 什么是网络 网络就是几部计算机主机或者网络打印机之类的接口设备,通过网线或者无线网络技术,将这些主机与设备连接起来,使得数据可以通过网络介质(网线或者网卡等硬件)来传输的一种方式. 以太网已经是一项公认的标准接口了,大家可以依据这个标准来开发自己

《操作系统概念》学习笔记-第二章

第二章 操作系统结构 在具有多个命令解释程序选择的系统中,解释程序被称为外壳(shell) 命令解释程序的主要作用是获取并执行用户指定的下一条命令. 有三种应用程序员常用的API,适用于windows系统的win32API,适用于POSIX系统的POSIX API,以及用于设计运行于JAVA虚拟机程序的JAVA API. 操作系统传递参数有三种方法: 最简单的方法是通过寄存器来传递参数,不过有时,参数数量会比寄存器多,这时,这些参数通常存在内存的块和表中,并将块的地址通过寄存器来传递.Linux

阿里云弹性计算服务ECS基本概念(第二章)

第二章:弹性计算服务ECS基本概念四.ECS产品概念ECS,是由多个并列,又相互关联的产品概念组成,包括在介绍产品概念之前,先需要理解两个重要的逻辑位置概念Region,地域,是阿里云提供云计算服务的城市位置.一般一个Region会覆盖一片区域,如北京地域覆盖华北区域Zone,可用区,是一个Region下,电力和网络独立,软件故障隔离的物理数据中心.可用区的开放,目的是容许用户自行选择资源的分配策略如何选择Rgion和ZoneECS产品概念之间的关系五.ECS实例介绍ECS实例概念与实例规格实例

Delphi知识点与技术概述【第二章 核心类库】

第三章 核心类库 Delhpi可视化编程依赖于庞大的巨型类库.Delphi 标准类库包含了数百个类以及数以千计的方法. 内容提要: *RTL包.CLX与VCL CLX用作linux中,VCL用作Windows中 VCL是一个独立的大型库(组件,控件,非可视组件,数据集合,数据感应控件,等等). 库的核心非可视化组件与类属于RTL包. Vcl结构: CLX结构: BaseCLX VisualCLX DateCLX NetCLX 库的VCL专用部分: VCL还提供了Windows专用的: Delph

ROS机器人程序设计(原书第2版)补充资料 (贰) 第二章 ROS系统架构及概念

由于工作事物繁忙,更新有些慢,抱歉. 已经完成的各章节补充说明,会依据反馈意见持续更新,希望大家多提宝贵意见,非常感谢. 在完成了第一章的学习实现之后,基本已经掌握了ROS系统的安装,那么如何使用ROS,理解系统架构和概念,这是第二章的内容.hydro-indigo-kinetic通用概念不做区分. 如果使用IDEs进行ROS开发环境构建,推荐:http://wiki.ros.org/IDEs RoboWare Studio:http://www.roboware.me 补充参考:http://