您找過以下的關鍵字

尚無搜尋紀錄



函數式程式設計可以說是非常古老的程式設計方式,但是近年來函數式

程式設計越來越受到人們的關注。不管是Google 力推的Go、學術派的

Scala 與Haskell,還是Lisp 的新語言Clojure,這些新的函數式程式語言

都越來越受到人們的關注。

當然不僅是後端函數式程式語言層出不窮,前端也不甘示弱。雖然前端

瀏覽器只支援一種語言——JavaScript,但是能支援函數式程式設計的

JavaScript 函數庫越來越多,例如Functional JavaScript、Underscore、

lodash 等。不僅如此,還有一些能編譯成JavaScript 的語言,能讓前端

的函數式程式設計發揮到極致, 例如Haskell 的PureScript、Scala 的

Scalajs、Clojure 的ClojureScript。

我上二段都以Clojure 結尾,是因為我喜歡把重點留到最後。Clojure 獨特於其他語言,它既是一種新的語言、一種函數式程式設計範式的語言,又流淌著古老的血液——Lisp。這是我選擇用Clojure 來詮釋函數式程式設計的原因之一。

為什麼我要選JavaScript 作為函數式程式設計的目標? Michael Fogus 用200 多頁向大家展示了不一樣的Functional JavaScript 程式設計方式,可惜Fogus 作為ClojureScript 編譯器的貢獻者,竟然選擇了Underscore作為函數庫,直接導致無法完全展示JavaScript 所能達到的函數式程式設計能力。有趣的是,ClojureScript 的作者把ClojureScript 的不可變(Immutable) 資料結構移植到JavaScript, 徹底將JavaScript 的函數式程式設計提升到用其他函數庫都完成不了的新高度。不僅如此,

Mozilla 的Sweet.js(https://github.com/mozilla/sweet.js)更是完成了另一個突破——JavaScript 的macro,它雖然不能算是函數式的概念,但也算是Lisp 語言的一項獨門絕技。

這一切的一切,都讓我忍不住要幫Fogus 出一本續集,用JavaScript 實

現其他函數式程式語言如Clojure 甚至是Haskell,讓大家進一步感受用

JavaScript 這門不完美的語言同樣可以撰寫出優雅的函數式程式,以不一

樣的方式思考和解決問題。於是不管你是想轉行JavaScript 的Clojure 開

發者,還是想了解Clojure 或函數式程式設計的JavaScript 開發者,都可

以在此找到一些啟發。