JS函數式編程【譯】5. 范疇論


第五章 范疇論

托馬斯·沃森(時任IBM董事長)說過一句著名的話,“我想全世界只有五台計算機的市場”。 那是1948年,當時,每個人都認為計算機只會被用於兩件事情:數學和工程。 即使是技術上最大膽的預想也不會認為有一天計算機能夠把西班牙語翻譯成英語, 或者模擬整個天氣系統。在那時最快的計算機是IBM的SSEC,每秒能計算50次,顯示終端要在15年后才出現, 多任務處理意味着多個用戶終端共享一個單線程。晶體管改變了一切,然而對技術的遠見沒有跟上。 在1977年,Ken Olson(DEC創始人)說過另一個愚蠢的預言:“任何人都沒有理由想在家里擁有個計算機”。

對於我們來說很明顯計算機不只是為科學家和工程師所用,但這只是事后諸葛。在70年前認為計算機只能作數學計算是很正常的。 沃森不僅沒有意識到計算機會改變社會,他還沒有意識到數學的改革和演進的能力。

不過計算機和數學的潛力並非被所有人忽視。約翰·麥卡錫在1958年發明了Lisp,這是一個革命性的基於算法的語言, 它把計算機帶入了新紀元。從那開始,Lisp對使用抽象層的思想(編譯、解釋、虛擬化)起到重要作用, 這促使了計算機從一個只能用於數學的機器變成了今天這樣。

從Lisp到Scheme,一個JavaScript的直接原型。現在它給我們帶來了一個輪回。如果計算機在核心上只是一個做數學的機器, 那么它在以數學為基礎編程范式上具有優越性是合理的

這里所說的“數學”並不是指計算機明顯能做的數字運算,而是要描述為離散數學:對於離散的、 對於諸如邏輯上的聲明或者計算機語言命令的數學結構的研究。 通過把代碼作為離散的數學結構來對待,我們可以把概念和想法應用到數學上。 這也就是為什么函數式編程在人工智能、圖譜搜索、模式識別以及其它計算機科學中具有挑戰性的領域里具有如此重要的地位。

這一章我們將針對日常編程中的問題對一些概念和它們的應用進行試驗,包括:

  • 范疇論(Category theory)
  • 態射(Morphisms)
  • 函子(Functors)
  • Maybes
  • Promises
  • Lenses
  • 函數組合

利用這些概念我們可以輕松安全地寫出整個庫和API。並且我們要從對范疇論的解釋開始一直到它在JavaScript里的實現。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM