12.3.2.1 使用高阶函数

在 F# 中,使用 Seq 模块与 List 相同,而且,我们已经知道,如何在 C# 中使用 LINQ 扩展方法。而在使用列表和序列方面,有一个显著区别:序列是延迟的。直到从返回序列中取出元素时,处理代码才执行,尽管那样,它所做的工作,也只是为了返回结果所需要的。现在,我们用简单的代码段来演示一下:


var nums1 =

nums.Where(n => n%3 == 0)

.Select(n => n * n)


let nums1 =

nums |> Seq.filter (fun n -> n%3=0)

|> Seq.map (fun n -> n * n)

当我们运行这段代码时,它不会处理任何元素;它只创建一个表示序列对象,可以用于访问元素;这还说明:nums 值可以是无穷数字序列。如果我们只访问序列的前 10 个元素,代码能够正常运行,因为筛选和映射都是延迟处理数据的。

使用高阶处理函数,经过我们在第六章深入讨论之后,你可能已经熟悉,在整本书中,我们提供了很多例子。在本章,我们将转而讨论表达可选工作流的方法。

时间: 2024-11-08 15:49:14

12.3.2.1 使用高阶函数的相关文章

快学Scala(12)--高阶函数

在函数式编程语言中,你只需要将明细动作包在函数当中作为参数传入即可. 作为值的函数 import scala.math._ class TestFun { val num = 3.14 val fun = ceil _ } 这段代码将num设为3.14,fun设为ceil函数.ceil函数后面的_意味着你确实指的是这个函数,而不是碰巧忘记了给他送参数 Array(3.14, 1.42, 2.0).map(fun) //Array(4.0, 2.0, 2.0) map方法接受一个函数参数,将它应用

[Node.js] 闭包和高阶函数

原文地址:http://www.moye.me/2014/12/29/closure_higher-order-function/ 引子 最近发现一个问题:一部分写JS的人,其实对于函数式编程的概念并不是太了解.如下的代码片断,常常让他们觉得不可思议: OAuth2Server.prototype.authCodeGrant = function (check) { var self = this; return function (req, res, next) { new AuthCodeG

Haskell高阶函数

Haskell functions can take functions as parameters and return functions as return values. A function that does either of those is called a higher order function. Higher order functions aren't just a part of the Haskell experience, they pretty much ar

Swift高阶函数:Map,Filter,Reduce

闭包介绍 Swift一大特性便是使用简洁的头等函数/闭包语法代替了复杂的blocks语法.希望我们在Swift中不再需要像fuckingblocksyntax中所描述的语法.(译者注:头等函数-即可将函数当作参数传递给其他的函数,或从其他的函数里返回出值,并且可以将他们设定为变量,或者将他们存储在数据结构中) 闭包是自包含的blocks,它能在代码中传递和使用. 本文我们将重点介绍匿名定义的闭包(如:定义成内联的且不具名)也称匿名闭包.我们能够将其作为参数传递给其他函数/方法或者将其作为返回值.

scala中的高阶函数

高阶函数 val list =List(1,2,3,4,5,6,7,8) val newList = list.map((x:Int) => 2*x) //map表示映射list中的每一个元素的值为原来的2倍 //newList中的值为 2,4,6,8,10,12,14,16 也可直接写成 val newList = list.map(x => 2*x) 也可等价写成 val newList = list.map(2*_) map函数相当于foreach 集合Set val s = Set(1

Python 函数式编程--高阶函数Map、Reduce、Filter、Sorted

1.1   高阶函数 变量可指向函数 >>> abs(-10) 10 >>> x = abs    --x指向abs函数 >>> x(-1)      --直接调用x 1 调用abs和调用x完全相同. 函数名也是变量 >>> abs = 10 >>> abs(-10) Traceback (most recent call last): File "<stdin>", line 1,

高阶函数和装饰器

函数式:一种编程范式 纯函数式编程:没有变量,支持高阶函数编程 Python不是纯函数式编程语言,支持高阶函数编程 变量可以指向函数,函数名就是指向函数的一个变量,与普通变量没有区别 高阶函数:能接收函数做参数的函数. map():是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回. def f(x): return x*x print map(f, [1, 2, 3, 4, 5, 6, 7

【转】Scala学习——高阶函数

原文链接 http://nerd-is.in/2013-09/scala-learning-higher-order-functions/ 原文发表于:http://nerd-is.in/2013-09/scala-learning-higher-order-functions/ 在函数式编程语言中,函数是“头等公民”,可以像任何其他数据类型一样被传递和操作. 因为Scala混合了面向对象和函数式的特性,所以对Scala来说,函数是“头等公民”. 作为值的函数 1 2 3 import scal

函数-内置函数,匿名函数,嵌套函数,高阶函数,序列化

函数简单说明 # 函数即"变量" # 高阶函数 # a.把一个函数名当做实参传给另一个函数(在不修改被装饰函数的源代码的情况下,为其添加功能) # b.返回值中包含函数名(不修改函数的调用方式) ''' import time def bar(): print("in the bar!") time.sleep(2) def foo(func): start_time = time.time() func() #根据内存地址,执行代码 stop_time = tim