1.4.1currying/柯里化
通常,编程的函数可以有一个参数列表,而λ表达式要求单参数。所以,currying/柯里化——多个参数的函数转化为只有一个参数的多个函数的连续调用,需要函数作为返回值。
有λ表达式,λx. λy. ( 2x+3y)
(define (F x y)(+ ( * 2 x) (* 3 y)));;;等价于下面的表示
(define F
(lambda...
分类:
其他好文 时间:
2016-05-10 02:49:08
阅读次数:
237
map()函数
map()是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回。
例如,对于list [1, 2, 3, 4, 5, 6, 7, 8, 9]
如果希望把list的每个元素都作平方,就可以用map()函数:
因此,我们只需要传入函数f(x)=...
分类:
编程语言 时间:
2016-05-07 11:06:35
阅读次数:
232
函数的参数是函数,函数的返回值是函数-高阶函数,scala与java最大区别。
函数与变量,地位同等函数赋值给变量:函数名称+空格+下划线
左边的函数,进行右边的加工
匿名函数 参数名称+类型和=和>指向函数的实现体
函数参数是函数
第一个参数:函数类型:输入是String类型,返回是Unit类型
第二个参数:字符串
没有返回值,返回一个过程Unit
将第二个参数传入第一个函数的参数...
分类:
其他好文 时间:
2016-05-06 15:35:14
阅读次数:
129
在这篇文章中我指出两点: 第一:系统函数可以被覆盖 比如: 但是,如果把函数本身赋值给变量呢? 结论:函数本身也可以赋值给变量,即:变量可以指向函数。 如果一个变量指向了一个函数,那么,可否通过该变量来调用这个函数? 说明变量f现在已经指向了abs函数本身。 本质原因:函数名本身也是变量 那么函数名 ...
分类:
编程语言 时间:
2016-04-28 17:04:45
阅读次数:
185
一、函数名即变量 如果将函数名当做变量来使用时,就会出现函数无法再调用的情况,因此这种情况是危险的: 二、高阶函数:一个函数可以接收另一个函数作为参数,这种函数就称之为高阶函数。 既然变量可以指向函数,而函数的参数又可以接收变量,因此函数的参数也就可以接收函数名,也即可以接收函数作为参数,称为高阶函 ...
分类:
其他好文 时间:
2016-04-10 21:08:01
阅读次数:
162
sorted排序算法Python的内置sorted()函数可以对list进行排序:>>>sorted([1,10,2,5,42,6])
[1,2,5,6,10,42]此外,sorted()函数也是一个高阶函数,他还可以接受一个key函数来实现自定义的排序,例如按绝对值大小排序:>>>sorted([36,5,-12,9,-21],key=abs)
..
分类:
编程语言 时间:
2016-04-10 01:26:18
阅读次数:
420
列表生成式(ListComprehensions)列表生成式即ListComprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式。举个例子,要生成list[1,2,3,4,5,6,7,8,9,10]可以用list(range(1,11)):>>>list(range(1,11))
[1,2,3,4,5,6,7,8,9,10]生成[1x1,2x2,3x3,...
分类:
编程语言 时间:
2016-04-08 15:32:33
阅读次数:
277
高阶函数:与传统函数只能传递或返回规定的数据类型相比,高阶函数可以返回函数,如下:
function foo(x){
return function(){
return x;
}
}
由于高阶函数可以传递函数为参数,因此可以传递不同类型的函数来实现不同的功能,更加灵活
使用偏函数,如果要创建一组函数,比如isFunction,isString等...
分类:
Web程序 时间:
2016-03-29 10:34:04
阅读次数:
174
6.5 使用函数 眼下为止,我们在这一章中讨论到的全部高阶函数都有类似结构,有两个參数:一个是要处理的值,还有一个是指定怎样处理这个值的函数。在使用函数时,值參数也能够是函数,因此,高阶函数的两个參数都能够是函数。
分类:
其他好文 时间:
2016-03-22 10:14:12
阅读次数:
187
一.高阶函数:顺序排序enumerate([1,2,3,4,5])
foridx,iteminenumerate([1,2,3,4]):
print(idex)
print(item)
defsort(*args):
ret=[]
foriteminargs:
fori,vinenumerate(ret):
ifitem>v:
ret.insert(i,item)
break
else:
ret.append(item)
returnret
sort(3,1,2,5)逆序..
分类:
其他好文 时间:
2016-03-10 18:57:47
阅读次数:
155