一等函數(shù)與Applicative編程
函數(shù)式一等公民
函數(shù)式語言應(yīng)該是促進(jìn)創(chuàng)造和使用函數(shù)的鸭巴×焕ぃ“一等”通常用來描述值辈毯,但函數(shù)被看作“一等公民”時(shí)陨舱,它就可以去任何值可以去的地方
一個(gè)高階函數(shù)應(yīng)該可以執(zhí)行下列至少一項(xiàng)操作
- 以一個(gè)函數(shù)作為參數(shù)
- 返回一個(gè)函數(shù)作為結(jié)果
多種JavaScript編程方式
- 命令式編程械荷,通過詳細(xì)描述行為的編程方式
- 基于原型的面向?qū)ο缶幊坦菜#谠蛯ο蠹捌涫纠木幊谭绞?/li>
- 元編程,對JavaScript執(zhí)行模型數(shù)據(jù)進(jìn)行編寫和操作的編程方式
元編程示例
function Point2D(x, y) {
this._x = x
this._y = y
}
new Point2D(0, 1)
// {_x: 0, _y: 1}
function Point3D(x, y, z) {
Point2D.call(this, x, y)
this._z = z
}
Applicative 編程
Applicative編程定義為函數(shù)A作為參數(shù)提供給函數(shù)B吨瞎,如
_.map
痹兜、_.reduce
、_.filter
集合中心編程
Alan Perlis 提出
用100個(gè)函數(shù)操作一個(gè)數(shù)據(jù)結(jié)構(gòu)颤诀,比用10個(gè)函數(shù)操作10個(gè)數(shù)據(jù)結(jié)構(gòu)要好字旭。