实用函数编程《序》

本书不同于现在的其他编程书籍,它不仅关注某种专门的编程语言或库,而是用目前用目前的编程语言或库去解释思维的方法。思维方法正变得越来越重要,已经重叠许多新的技术。

我们已经知道本书中描述的某些概念,因为,函数式思想在许多技术中都有所体现。.NET 的示例包括C# 3.0 和LINQ 项目,微软对 .NET 的并行扩展(Microsoft Parallel Extensions to .NET),以及在 WindowsPresentation Foundation(WPF)中使用的声明式编程模型。在本书中,我们将以已有的 .NET 和 C# 经验为基础,来解释函数式编程范式,将介绍 F#,这是微软新的函数式编程语言,用它来把抽象的思想转换成更具体的形式;在可能的地方我们也使用
C#,因为函数式思想也有助于设计出好的 C# 应用程序。的能是身姿 盗劫tation Foundation (WPF).

如果我写的书是纯粹介绍 F# 的,那么,我会按照各个语言功能来组织,并逐个解释这些功能。而本书是一般意义上的函数式编程,因此,在构成函数范式的思想上是松散的结构,但这也更困难,因为,思想没有清晰的边界,且常有重叠。

我们已经尝试过,选择一些我们认为对于函数式编程的新手来说是最重的思想,然后,围绕这些来组织内容,这一点在第二部分特别重要,我们将系统介绍函数值,高阶函数,以及函数程序的体系结构。这样,示例能够很快用来演示函数式编程,比如数据集合的使用,它不止出现在一个地方,相反,我们介绍的每一种思想,会在后面的章节中多次出现。因此,我们使用这种方法来展示如何从一组很小的概念出发产生出优美的函数式编程思想,就像函数程序自己做的一样。

感谢

“蝴蝶效应(butterfly effect)”,是由Edward Lorenz 提出的一个概念,是基于混沌理论:是说表面上看来很小的事件有可能引起很大的事件,比如,蝴蝶在亚洲的某个地方轻轻扇了几下翅膀,就可能引起南美洲的飓风。(蝴蝶扇动翅膀在理论上是恒定的,但是地点(亚洲或巴西)和结果(飓风或龙卷风)却会不同)。这足以说明,正是由于有这许多人(和蝴蝶),才有可能有了这本书,如果没有他们,就不会有这本书;因此,即使我不相信混沌理论,但是,在这一节中我要感谢的人还是很多的。

如果我没有遇到Don Syme,可能永远不会对 F# 和函数式编程感兴起。Don 是我在微软研究院的实习导师,和他在一起工作,并参加长期有关 F#(以及生活、宇宙和其他的一切)的讨论是一件很愉快的事情;还要感谢的是微软研究院的James Margetson,它教会了我许多很酷的函数编程技巧。然而,如果我不是获得微软 MVP,并且遇到了Luke Hoban,他后来把我介绍给了Don,那么,可能永远也遇不到Don 和 James。如果我必须继续像这样,那么,最后还要感谢Michal Bláha, Jan Stoklasa、Bo?ena
Mannová、CodeProject.com的作者,以及其他许多人。

没有Mike Stephens,就不会有这本书,他是Manning 公司最先与我接触的;由于Harry Pierson 的最先参与,我才着手写作。虽然我们在一起的时间不长,但是,Harry 的参与对的鼓励非常重要。

前面,我提到的人对本书的着手创作起的很大的作用,下面要感谢的人对本书的完成至关重要。

我要非常感谢我的合作者Jon,在从初稿到成书的过程中对我的帮助。如果你感到本书就好像是为你写的,那么,还是要感谢 Jon,因为他仔细地为读者把书中的每一项都调整到适当的形式。最后,Jon 是一个很好相处的人,他会很乐意与你本书的问题,不论是在线,还是面谈。

这里,我还要感谢Manning 公司中每一个对本书的帮助。

(略……)

当然,我还要感谢我的朋友和我的家庭,对于不认识他们的人来说,他们的问题“你的书啥时候能完成?”,听起来可能不特别入耳,但我知道他们是为我好,我真诚地感激他们的鼓励。最后,特别要感谢的是我最亲爱的Evelina,她不仅在道义上对我给予了极大的支持,而且还阅读了大部分书稿,并进行了评论。我权elina,就像我对计算的

TOMAS PETRICEK

我首选要感谢 Tomas 和Manning 公司的每个人,给予我参与本书部分工作的机会。对于一个宏大目标来说,这是一个很小的部分,但非常有趣,它给了我学习有关函数式编程的乐趣,从书本到书本。我只希望我所做的这一小部分能有用,我所代表的是热情而无知的读者(当然包括 C# 粉),因此,你现在读到的本书在某些方面就是为了给我讲授函数式编程。书本身是一份需要感谢的礼物,Tomas 已经感谢了 Manning 公司的所有编辑和其他工作人员,我也同样要感谢他们。

我的孩子还太小不会编程,我的妻子也……算了,通常,总的来说,当高阶函数困扰我的时候,她总是给我以支持。

(略……)

最后,还要感谢我的英语老师,特别是Simon Howells。随着我学习了更多的编程语言,我也更确信,软件工程师应该注意到语言是用来和人交流的,而不是和计算机。Simon Howells 对语言和文学的热情就像我对计算一样,这份热情也感染了他的学生。他不可能阅读我写过的每一字,但是,他教给我的思想,我受用终生。

JON SKEET

最先它有这个本快的事情(

实用函数编程《序》,布布扣,bubuko.com

时间: 2024-10-12 22:39:51

实用函数编程《序》的相关文章

1.2 通往实用函数编程之路

函数式编程的思想发源要早于第一台计算机,其历史可追溯到上世纪三十年代,当时 Alonzo Church 和 Stephen C. Kleene 引入一种理论,叫 lambda 演算,属于数学基础研究.虽然它未能实现其初衷,但仍有一些逻辑分支在使用,并发展出有用计算理论.为了学习函数式编程的基本原理,有必须简单了解一下lambda 演算(下一章).发明计算机以后,Lambda 演算放弃了它原来的领域,成为早期函数式编程语言的灵感. 1.2.1 函数语言 到 2008 年,第一个函数式编程语言走过了

Test2 unit4

第四单元 管理系统中的简单分区和文件系统 学习目标 添加文件系统空间 添加 swap 交换分区 对系统分区加密 简单分区和文件系统 存储是每个计算机系统的基本需求. Red Hat Enterprise Linux 提供了一些强大的工具 , 它们能在大量的场景中管 理多种类型的存储设备 disk 是用于管理磁盘分区的实用程序.您可以通过选择 -l 选项和指定磁盘名称 ( fdisk -cul /dev/vda ) 运行该实用程 序 , 以查看磁盘及其分区.您可以通过交互式地运行该实用 程序 ,

##II 第四单元##管理系统中的简单分区和文件系统

简单分区和文件系统 存储是每个计算机系统的基本需求. Red Hat EnterpriseLinux 提供了一些强大的工具 , 它们能在大量的场景中管理多种类型的存储设备 disk 是用于管理磁盘分区的实用程序.您可以通过选择 -l选项和指定磁盘名称 ( fdisk-cul /dev/vda ) 运行该实用程序 , 以查看磁盘及其分区.您可以通过交互式地运行该实用程序 , 并选择相应的菜单选项 (fdisk -cu /dev/vda ) 进行更改. -c 禁用旧的 DOS 兼容模式 ,-u 以扇

关于本书

如果你已经开发过 .NET 程序,熟悉面向对象技术,想知道"函数式编程"有什么新内容,以及我们如何能从中受益,那么,本书肯定适合你. 本书特别适合已经有面向对象编程和 C# 2.0 知识的开发人员,当然,通常并不要求你有函数编程的知识,更不要求知道 F#.事实上,如果你过去常用面向对象方式思考问题,那么,学习函数式编程会更困难,因为许多函数式思想对你来说是陌生的.我们写这本书已经在思想上有所考虑,通常会注意你的直觉,并比较面向对象与函数式编程,来解释特定的主题. 如果你已经使用过其他面

Python自动化开发学习12-MariaDB

关系型数据库 主流的关系型数据库大概有下面这些: Oracle : 甲骨文公司的企业级的数据库 SQL Server : 微软的 MySQL : 免费的数据库,现在也属于Oracle的旗下产品 MariaDB : 开源的数据库,MySQL的一个分支 PostgreSQL : 也是开源的 SQLite : 一款轻量级的数据库 DB2 : IBM的 RDBMS 术语 RDBMS(Relational Database Management System)即关系数据库管理系统,在开始之前,先了解下RD

mysql必知必会--MySQL简介

什么是MySQL MySQL已经存在很久了,它在世界范围内得到了广泛的安装和使用. 为什么有那么多的公司和开发人员使用MySQL?以下列出其原因. 成本--MySQL是开放源代码的,一般可以免费使用(甚至可以 免费修改). 性能--MySQL执行很快(非常快). 可信赖--某些非常重要和声望很高的公司.站点使用MySQL, 这些公司和站点都用MySQL来处理自己的重要数据. 简单--MySQL很容易安装和使用. 事实上,MySQL受到的唯一真正的批评是它并不总是支持其他 DBMS提供的功能和特性

(单链表)单链表的整体逆序和局部逆序

题目一:将单链表翻转. 思路:有三种方式. 一:用数组存储单链表的值,然后重新逆序赋值,效率较低. 二:利用三个指针,在原来的基础上进行逆序.这种方法比较实用,效率也高. 三:从第2个节点到第N个节点,依次逐节点插入到第1个节点(head节点)之后,最后将第一个节点挪到新表的表尾.需要新建一个链表,这种方法和第二种差不多. 这里我就写出第二种方法,比较实用. 代码(方法二): struct ListNode { int val; ListNode *next; ListNode(int x) :

jstl标签 core fmt fn函数使用参考(为第一篇的补充,更为实用)

JSTL标签 参考手册 前言 ========================================================================= JSTL标签库,是日常开发经常使用的,也是众多标签中性能最好的.把常用的内容,放在这里备份一份,随用随查.尽量做到不用查,就可以随手就可以写出来.这算是Java程序员的基本功吧,一定要扎实. JSTL全名为JavaServer Pages Standard Tag Library,目前最新的版本为1.1版.JSTL是由J

Excel实用知识2(排序,筛选,分析工具)

Excel实用知识2 [排序,筛选,分析工具(描述统计,相关系数,回归分析,抽样分析,预测工作表)] 纯手打,可能有错别字,使用的版本是office2013 转载请注明出处 http://www.cnblogs.com/hnnydxgjj/p/6337670.html ,谢谢 简单排序 简单的降序,升序 降序 升序 条件排序 [数据]--[排序] 会显示当前排序条件,点击“添加条件”,设置新的约束,这适用于多条件排序 自定义排序 [数据]--[排序] 筛选数据 选择要筛选的内容后,[数据]--[