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) |