1.2 通往实用函数编程之路

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

1.2.1 函数语言

到 2008 年,第一个函数式编程语言走过了 50 年的历史。LISP,由约翰麦卡锡(John McCarthy)于 1958 年创建,直接基于 lambda 演算理论。LISP,一种极其灵活的语言,提出了许多今天仍在使用的编程思想,包括数据结构、垃圾收集和动态类型。

上世纪七十年代,罗宾米尔纳(Robin Milner)开发了一种语言,ML,它是包括现在F# 语言系列中的第一个。受类型化 lambda 演算的启发,ML 添加了类型的概念,甚至能够像我们现在 .NET 中处理泛型的做法一样写泛函数;ML 还有强大的类型推断机制,这是 F# 能写出简洁程序的关键。OCaml 出现于 1996 年,是对 ML 语言的务实扩展,它也是最早把的面向对象和函数式方法结合起来的语言之一。F# 深受OCaml 的启发,为了成为一流的 .NET 语言,且是真正的函数语言,必须将这些范式结合起来。

其他重要的函数语言还有 Haskell (一种纯正、优雅的数学语言)和 Erlang (因消息并发传递而著名,我们将在第十六章讨论)。我们学习Haskell 和 LISP,更多是有关优于F# 的主题,但首先看一下 F#  的历史。

1.2.2 .NET 平台上的函数式编程

第一个版本的 .NET 于 2002 年发布,和 F# 语言诞生于同一年。F# 最早是唐赛姆(Don Syme)和同事合作的一个微软研究项目,其目标是把函数式编程引入 .NET。F# 和类型化函数式编程通常会更加对 .NET 中泛型的需要分量,F# 的设计人员深入参与.NET 2.0 和 C# 2.0 中泛型的设计与实现。

由于在核心框架中实现了泛型,F# 进展更快,在F# 中使用的编程风格也开始改变。它开始是作为支持对象的函数语言,但作为成熟的语言,取两种风格中的长处似乎更自然。因此,F# 现在更精确地说是一种多范式(multiparadigm)语言,结合了函数式和面向对象的方法,还有一套工具,能够编写交互方式脚本。

[MICROSOFT F#]

F# 是针对 .NET 框架的函数式编程语言,它将函数式编程的简洁性、表现性和组合性风格与.NET 的运行库、库、互操作性、对象模型结合在一起。[F# 主页]

F# 自诞生之初就一直是 .NET 的一等公民,它不仅能够访问所有标准的 .NET 组件,而且,同样重要的是,所有其他 .NET 语言也能够访问用 F# 开发的代码,这样,既可以用 F# 开发独立 .NET 应用程序,也可以开发大型项目的一部分。F# 一直受Visual Studio 支持,在 2007 年,F# 开始从研究项目转变为完全产品级的语言;2008 年,微软宣布 F# 将成为随 Visual Studio 2010 发布的语言之一。就这一点而言,也应该成为关注 F# 和整个函数范式很好的理由,但现在让我们看看更务实的原因。

1.2 通往实用函数编程之路

时间: 2024-10-17 06:40:40

1.2 通往实用函数编程之路的相关文章

《Python机器学习及实践:从零开始通往Kaggle竞赛之路》

<Python 机器学习及实践–从零开始通往kaggle竞赛之路>很基础 主要介绍了Scikit-learn,顺带介绍了pandas.numpy.matplotlib.scipy. 本书代码基于python2.x.不过大部分可以通过修改print()来适应python3.5.x. 提供的代码默认使用 Jupyter Notebook,建议安装Anaconda3. 最好是到https://www.kaggle.com注册账号后,运行下第四章的代码,感受下. 监督学习: 2.1.1分类学习(Cla

实用函数编程《序》

序 本书不同于现在的其他编程书籍,它不仅关注某种专门的编程语言或库,而是用目前用目前的编程语言或库去解释思维的方法.思维方法正变得越来越重要,已经重叠许多新的技术. 我们已经知道本书中描述的某些概念,因为,函数式思想在许多技术中都有所体现..NET 的示例包括C# 3.0 和LINQ 项目,微软对 .NET 的并行扩展(Microsoft Parallel Extensions to .NET),以及在 WindowsPresentation Foundation(WPF)中使用的声明式编程模型

《机器学习及实践--从零开始通往Kaggle竞赛之路》

<机器学习及实践--从零开始通往Kaggle竞赛之路> 在开始说之前一个很重要的Tip:电脑至少要求是64位的,这是我的痛. 断断续续花了个把月的时间把这本书过了一遍.这是一本非常适合基于python入门的机器学习入门的书籍,全书通俗易懂且有代码提供.书中源代码连接为Ipython环境.主页君使用的是pycharm,python2.7,具体安转过程书本写的很详细.码完书中代码,有一点点点小不符(或许可能是因为平台不一样),百度基本可以解决问题(有问题也可以留言探讨).贴一点代码,以示学习: 1

swoole通往大神之路——swoole任务中心说明及进程任务架构搭建

Swoole多任务处理中心 如果你还不会用swoole就out了,swoole通往大神之路——swoole任务中心说明及进程任务架构搭建 教学视频: www.bilibili.com/video/av779… 一.进程的基本知识 什么是进程,所谓进程其实就是操作系统中一个正在运行的程序,我们在一个终端当中,通过php,运行一个php文件,这个时候就相当于我们创建了一个进程,这个进程会在系统中驻存,申请属于它自己的内存空间系统资源并且运行相应的程序 对于一个进程来说,它的核心内容分为两个部分,一个

通往财富自由之路3--开始一年的财富自由之旅

那些终将走过财富自由里程碑的人,他们的大脑里运行的操作系统就是不一样的.[可能他们的财商高,另外他们的学习能力也很强] 绝大多数人就是做不到只字不差地阅读.[有些好书,读得太快,就是吃亏,会漏掉很多重点.Action:遇到好内容时,要读很多遍!说到<肖申克的救赎>,我只看过2遍,其中一遍还是陪孩子一起看的] 阅读之后的思考,思考之后的选择,选择之后的行动才有价值.路很长,可能要走一辈子(7年).只有持续正确的行动才可能有积累效果(复利效应),才可能引发真正有意义的变化. 199元与下面相比真不

通往财富自由之路5--你拥有的最宝贵的财富是什么?(问答02)

凑热闹.随大流.瞎操心是注意力的三个大坑. 长期目标:早晚有一天,我要做到在时间上自由. 注意力要放在自己的成长上,要放在自己的真爱上,要放在对整个社会真正有贡献的事情上. 1.你必须关注什么呢? 一个人在社会中承担着不同角色以及拥有自身的追求,所以有许多职责范围.身为员工,会关注工作事务:身为人父,会关注孩子的教育:身为丈夫,会关注一些家务:一生中只有几个好友,需要关注他们的成长,与他们共同进步:另外,金钱不可缺,要关注理财:好身体是革命的本钱,需要关注健康:个人有些兴趣爱好,也要关注,还经常

通往财富自由之路20160808--付费就是捡便宜

对于上一个问题“用什么换什么更划算?”我还从未认真思考过,只是想起来用钱换书比较划算.一本30元的书如果有一个知识点用上了,远远不止30元的价值. 把一段时间用于看电视换为看书,肯定更划算. 凡是能用钱买的时间就是便宜的,凡是能用时间换来的注意力持续就是有价值的. 注意力 > 时间 > 金钱 这里并不是让人们树立金钱万能的世界观,而是说用钱来买时间,换取一段注意力是划算的,因为只有我的注意力才是产生财富的唯一来源. 不与老婆吵架. 如果心情不好,则注意力无法集中,则什么事也办不了,什么GTD.

Python机器学习及实践+从零开始通往Kaggle竞赛之路

内容简介 本书面向所有对机器学习与数据挖掘的实践及竞赛感兴趣的读者,从零开始,以Python编程语言为基础,在不涉及大量数学模型与复杂编程知识的前提下,逐步带领读者熟悉并且掌握当下最流行的机器学习.数据挖掘与自然语言处理工具,如Scikitlearn.NLTK.Pandas.gensim.XGBoost.Google Tensorflow等. 全书共分4章.第1章简介篇,介绍机器学习概念与Python编程知识:第2章基础篇,讲述如何使用Scikitlearn作为基础机器学习工具:第3章进阶篇

BlocksKit block从配角到主角—oc通往函数式编程之路--oc rx化?

BlocksKit 对 oc语言的功能层.UI层进行了大量的适配,使得oc能够复合函数式编程的风格: 是oc语言的函数式编程风格改造: 将函数式风格的BlocksKit API解释为原生的功能调用: 对系统API的block方式调用的高度封装, 4.BlocksKit目录结构 BlocksKit代码存放在4个目录中分别是Core.DynamicDelegate.MessageUI.UIKit.其中: Core 存放Foundation Kit相关的Block category DynamicDe