第四部分 函数式编程应用

虽然函数式编程肯定是优雅的,但是,你可能更感兴趣的是其实用目的:作为一种通用的风格,是有用的,在某些问题域中,它肯定更出色。我们已经看到的例子,比如,第四章绘制饼图的应用程序,和第十一章简单的照片浏览器,这些示例的主要目的,是为了演示特定的概念和技术。

第四部分则不同。在每一章,我们将花大量时间讨论实际问题,使用最适当的 F# 特点和函数式编程来解决。这些代码将使用我们到目前为止学到的多种功能,限制在一章中讨论,会比较复杂。

函数式编程在两个领域有明显优点:异步(asynchronous)和并行(concurrent)编程。

在第十三章,我们将讨论有关异步编程,在大型现代数据驱动编程的环境中,我们将以异步方式获取数据,以交互方式浏览其结构,用 Excel 呈现结果。

在第十四章,我们会把注意力放到并行编程,这是函数式编程的亮点:不可变性规避了修改共享状态的问题,所以,函数式风格的程序更容易并行化。

在第十五章,我们将探讨使用组合(composition)的原理,开发函数式库。迄今为止,我们所见过的很多函数式功能,都是利用这种原理构建的。其概念是,我们提供少量的、容易理解的、能够以非常丰富的方式进行组合的基本操作;然后,用这些基本操作去构建复杂的结果,而不必描述任何实现的细节。为了演示设计的库是遵循这一原则的,我们将创建一个描述动画的库,还会简要介绍一个有关金融的例子。

在第十六章,我们将讨论需要响应不同事件的应用程序。这是一个广泛的主题:事件可能由用户界面生成,也可能来自需要收集用户信息,并向用户展示数据的后台任务。

在第十三章和第十六章,我们将使用的 F# 功能,是很难用 C# 写的,所以,这些示例将只使用 F#;第十四章和第十五章,只构建在顶级函数式编程标准方面,比如不可变性、高阶函数,或者关注可组合的代码。这样,大部分的代码可以用 F# 和 C# 来写,不像本书的前面部分,通常只使用 C# 演示具体的概念,现在,我们写的代码更加接近实际,使用函数式概念来激发设计,解决业务问题。

时间: 2024-11-05 17:32:49

第四部分 函数式编程应用的相关文章

python学习笔记(四) - 函数式编程

一. 高阶函数 高阶函数:把函数作为参数传入,这样的函数称为高阶函数,函数式编程就是指这种高度抽象的编程范式 def add(x, y, f): return f(x) + f(y) print add(-5, 6, abs) # 11 二.返回函数 aaa 三.匿名函数 aaa 四.装饰器 aaa 五.偏函数 aaa

Scala函数式编程(四)函数式的数据结构 下

前情提要 Scala函数式编程指南(一) 函数式思想介绍 scala函数式编程(二) scala基础语法介绍 Scala函数式编程(三) scala集合和函数 Scala函数式编程(四)函数式的数据结构 上 1.List代码解析 今天介绍的内容,主要是对上一篇介绍的scala函数式数据结构补充,主要讲代码.可以先看看上一节,主要讲的是函数式的list,Scala函数式编程(四)函数式的数据结构 上.这些代码我都放在我的公众号里面,包括函数式的List以及一个函数式的二叉搜索树,关注公众号:哈尔的

前端进击的巨人(四):略知函数式编程

系列更文前三篇文章,围绕了一个重要的知识点:"函数". 函数调用栈.函数执行上下文.函数作用域到闭包.可见不理解函数式编程,代码都撸不好. 函数是一等公民 函数与其它数据类型一样,可以作为值赋给变量,作为参数传递或返回值返回,也可以像对象一样给函数创建属性(不推荐给函数加属性,虽然可用). 函数在实际开发中应用: 函数声明 函数表达式 匿名函数 自执行函数 // 函数声明 function getName() { //... } // 函数表达式 var getName = funct

第3课 Scala函数式编程彻底精通及Spark源码阅读笔记

本课内容: 1:scala中函数式编程彻底详解 2:Spark源码中的scala函数式编程 3:案例和作业 函数式编程开始: def fun1(name: String){ println(name) } //将函数名赋值给一个变量,那么这个变量就是一个函数了. val fun1_v = fun1_ 访问 fun1_v("Scala") 结果:Scala 匿名函数:参数名称用 => 指向函数体 val fun2=(content: String) => println(co

js 函数式编程 浅谈

js 函数式编程 函数式的思想, 就是不断地用已有函数, 来组合出新的函数. 函数式编程具有五个鲜明的特点: 1. 函数是"第一等公民" 指的是函数与其他数据类型一样,处于平等地位 2. 只用"表达式",不用"语句" "表达式"(expression)是一个单纯的运算过程,总是有返回值: "语句"(statement)是执行某种操作,没有返回值. 3. 没有"副作用" 指的是函数内部与外

[原创译书] JS函数式编程 前言

前言 函数式编程是一种能够让你编写更聪明的代码的方式,可以减低复杂度,增强模块化. 它是一种通过灵巧地变化.组合.使用函数达到编写简洁代码的方式. Javascript提供了一个实现这些的超赞的途径.Javascript,这个Internet的脚本语言, 它的核心实际上是一个函数式语言.通过学习如何显露出它作为一个函数式语言的真实身份, 我们可以实现强大的.更易维护的以及更可靠的web应用. 通过这些,Javascript的那些怪癖和缺陷将会立刻变得清晰,并且语言本身也将会无限精彩. 学习如何使

python函数及函数式编程

函数是对程序逻辑进行结构化或过程化的一种编程方法.函数与过程相比,两者都是可以被调用的实体,但是传统意义上的函数或者"黑盒",可能不带任何输入参数,经过一定的处理,最后向调用者传回返回值,而过程是简单.特殊.没有返回值的函数.其实,python的过程就是函数,因为在函数中如果没有显式return返回值的话,解释器会隐式地返回默认值None. 1.函数定义 def foo([argument-list]): "function_document_string" foo

函数式编程思想:以函数的方式思考,第3部分

过滤.单元测试和代码重用技术 译者:Elaine.Ye原文作者:Neal Ford 发布:2011-07-06 11:23:24挑错 | 查看译者版本 | 收藏本文 在函数式编程思想的第一部分和第二部分中, 我考察了一些函数式编程的主题,研究了这些主题如何与Java?及其相关语言产生关联.本篇文章继续这一探索过程,给出来自前面文章的数字分类器的一个 Scala版本,并会讨论一些颇具学术色彩的主题,比如说局部套用(currying).部分应用(partial application)和递归等. 用

Javascript 中的函数式编程

本文和大家分享的主要是javascript中函数式编程相关内容,一起来看看吧,希望对大家学习javascript有所帮助. 函数式编程(functional programming)或称函数程序设计,又称泛函编程,是一种编程范型,比起命令式编程,函数式编程更加强调程序执行的结果而非执行的过程,倡导利用若干简单的执行单元让计算结果不断渐进,逐层推导复杂的运算,而不是设计一个复杂的执行过程. 函数式编程,近年来一直被炒得火热,国内外的开发者好像都在议论和提倡这种编程范式.在众多的函数式语言中,Jav