函數式編程
相比於命令式編程關心解決問題的步驟,函數式編程是面向數學的抽象,關心數據(代數結構)之間的映射關係。函數式編程將計算描述爲一種表達式求值。編程
在狹義上,函數式編程意味着沒有可變變量,賦值,循環和其餘的命令式控制結構。即,純函數式編程語言。編程語言
Pure Lisp, XSLT, XPath, XQuery, FP
Haskell (without I/O Monad or UnsafPerformIO)
在廣義上,函數式編程意味着專一於函數函數式編程
Lisp, Scheme, Racket, Clojure
SML, Ocaml, F#
Haskell (full language)
Scala
Smalltalk, Ruby
函數
函數式編程中的函數,這個術語不是指命令式編程中的函數(咱們能夠認爲C++程序中的函數本質是一段子程序Subroutine),而是指數學中的函數,即自變量的映射(一種東西和另外一種東西之間的對應關係)。也就是說,一個函數的值僅決定於函數參數的值,不依賴其餘狀態。函數
在函數式語言中,函數被稱爲一等函數(First-class function),與其餘數據類型同樣,做爲一等公民,處於平等地位,能夠在任何地方定義,在函數內或函數外;能夠賦值給其餘變量;能夠做爲參數,傳入另外一個函數,或者做爲別的函數的返回值。orm