6.7 处理列表
在第三章,我们讨论过列表,学习了显式使用递归和模式匹配处理列表,还用 C# 实现了函数式列表类型;第 4 章的示例应用程序就以这种方式使用列表,但是要注意,显式写列表处理并不实用。
在这一章,将用到递归模式,因此,你可能已经知道我们下一步要讨论什么了。我们可以使用高阶函数来处理列表,而不必显式使用模式匹配的每种情况;我们已经看到过一些处理 F# 列表的函数,比如 Lis...
分类:
其他好文 时间:
2014-11-18 14:48:35
阅读次数:
171
6.6.2 自动泛型化(automatic generalization)
在这一章,我们已经实现了几个 F# 的高阶函数,也看到了在 F# 和 C# 中并排的实现。F# 实现的很重要方面,是我们根本不需要指定类型;这是由于有了自动泛型化(automatic generalization),它用在推断函数声明的类型。我们将用Option.bind 函数的实现作为示例,介绍这个过程是如何工作...
分类:
其他好文 时间:
2014-11-18 11:47:21
阅读次数:
223
Java 8中同时存在面向对象编程(OOP)和函数式编程(FP, Functional Programming)这两种编程范式。实际上,这两种范式并不矛盾,只是着重点不同。在OOP中,着重于通过丰富的类型系统对需要解决的问题进行建模;而FP中则着重于通过高阶函数和Lambda表达式来完成计算。所以我们完全可以将这两者融合在一起,对问题提出更加优雅的解决方案。
在这篇文章中,会介绍如何通过函数...
分类:
编程语言 时间:
2014-11-06 10:58:09
阅读次数:
401
6.4.3 分步分析(Evaluating)示例
能这像这样自信地使用高阶函数,是需要一些时间的,尤其是嵌套使用。我们将研究前面清单中的代码的地,通过跟踪几个样本输入。从抽象的问题“一般情况下这段代码做什么?”,到具体的问题“特定情况下这段代码做什么?”,通常可以帮助澄清真相。
如果我们第一次输入一个无效的值,会发生什么。那时,从 readInput() 返回的第一个值将是 None。要...
分类:
其他好文 时间:
2014-11-02 09:26:13
阅读次数:
180
在Thinking in scala (5)----高阶函数* 里面,我们演示了如何把一个函数作为参数传递给另外一个函数。在本文里面,我们来演示函数式编程另外一个重要的特性:返回一个函数。首先来看这么一段代码:code piece 1:def sum(f:Int=>Int):(Int,Int)=>I...
分类:
其他好文 时间:
2014-10-31 11:40:31
阅读次数:
165
传入函数要理解“函数本身也可以作为参数传入”,可以从Python内建的map/reduce函数入手。如果你读过Google的那篇大名鼎鼎的论文“MapReduce: Simplified Data Processing on Large Clusters”,你就能大概明白map/reduce的概念。...
分类:
编程语言 时间:
2014-09-28 01:51:30
阅读次数:
223
scala混合了面向对象和函数式的特征。在函数式的编程语言中,函数是可以像其他的数据类型一样被传递和操作。这对于想将详细动作传入给算法时变得非常有用。importscala.math._
valfun=ceil_/从技术上将_的作用是将ceil方法变成了函数
res=fun(num)/num=3.14,res=4
Array(3.14,..
分类:
其他好文 时间:
2014-09-18 16:45:25
阅读次数:
188
其实这个区别就好像普通函数和高阶函数的区别一样。这样是不是很好理解了呢,额,如果你说你还不知道啥是高阶函数,那么还是不要看这个文章了。下面来看看我是如何把他们类比起来的。 我们看看haskell中的Eq是如何...
分类:
其他好文 时间:
2014-09-17 20:33:52
阅读次数:
198
本系列作为Effective JavaScript的读书笔记。
不要被高阶函数这个名字给唬住了。实际上,高阶函数只是代表了两类函数:
接受其他函数作为参数的函数
返回值为函数的函数
有了这个定义,你也许就发现你已经使用过它们了,典型的就是对于一些事件的处理时传入的回调函数。
另外的一个典型使用场景就是Array类型的sort函数,它可以接受一个function作为排...
分类:
编程语言 时间:
2014-09-15 10:05:08
阅读次数:
219
本文主要记录自己对几个高级语法概念的理解:匿名函数、lambda表达式、闭包、装饰器。
这几个概念并非Python特有,但本文只限于用Python做说明。
1. 匿名函数
匿名函数(anonymous function)是指未与任何标识符绑定的函数,多用在functional
programming languages领域,典型应用场合:
1) 作为参数传给高阶函数(higher-or...
分类:
编程语言 时间:
2014-09-12 13:36:13
阅读次数:
344