45 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			45 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
|   | --- | |||
|  | title: Functional Programming | |||
|  | localeTitle: 功能编程 | |||
|  | --- | |||
|  | ## 功能编程
 | |||
|  | 
 | |||
|  | 功能编程是通过组合**纯函数** ,避免**共享状态** , **可变数据**和**副作用**来构建软件的过程。函数式编程是**声明性的** (告诉计算机你想做什么)而不是**命令式** (告诉计算机确切地知道如何做),并且应用程序状态流经纯函数。将其与面向对象编程进行对比,其中应用程序状态通常与对象中的方法共享和共存。 | |||
|  | 
 | |||
|  | ### 为什么功能编程?
 | |||
|  | 
 | |||
|  | *   它通常更简洁 | |||
|  | *   它通常更容易预测 | |||
|  | *   它比面向对象的代码更容易测试 | |||
|  | 
 | |||
|  | ### 通过编程语言采用
 | |||
|  | 
 | |||
|  | 许多编程语言都支持Haskell,F#,Common Lisp,Clojure,Erlang,OCaml等函数式编程。 JavaScript还具有非类型化函数语言的属性。 | |||
|  | 
 | |||
|  | ### 用途
 | |||
|  | 
 | |||
|  | 功能编程长期以来在学术界很受欢迎,但几乎没有工业应用。然而,最近几种主要的功能编程语言已经用于商业或工业系统。例如,Erlang编程语言由瑞典公司Ericsson在20世纪80年代末开发,用于在T-Mobile,Nortel,Facebook,ÉlectricitédeFrance和WhatsApp等公司构建一系列应用程序。 | |||
|  | 
 | |||
|  | ### 高阶函数
 | |||
|  | 
 | |||
|  | 高阶函数是函数式编程的重要组成部分。高阶函数是将函数作为参数或返回函数的函数。 | |||
|  | 
 | |||
|  | ### 地图
 | |||
|  | 
 | |||
|  | `map`是一个高阶函数,它将函数调用到列表的每个元素,并将结果作为_新_列表返回。 | |||
|  | 
 | |||
|  | 这是一个`map`的例子: | |||
|  | 
 | |||
|  | ```javascript | |||
|  | const myList = [6, 3, 5, 29];  | |||
|  |   | |||
|  |  let squares = myList.map(num => num * num); // [36, 9, 25, 841]  | |||
|  | ``` | |||
|  | 
 | |||
|  | ### 更多信息:
 | |||
|  | 
 | |||
|  | *   [维基百科 - 功能编程](https://en.wikipedia.org/wiki/Functional_programming#Use_in_industry) | |||
|  |      | |||
|  | *   [KeyCDN - 功能编程 - 它是什么以及为什么重要?](https://www.keycdn.com/blog/functional-programming/) | |||
|  |      | |||
|  | *   [中 - 什么是功能编程?](https://medium.com/javascript-scene/master-the-javascript-interview-what-is-functional-programming-7f218c68b3a0) |