全本 | iKcamp翻譯 | 《JavaScript 輕量級函數式編程》|《你不知道的JS》姊妹篇

來源:互聯網
上載者:User

標籤:function   翻譯   get   alt   mon   apple   post   ash   lte   

原文地址:Functional-Light-JS

  • 原文Kyle Simpson - 《You-Dont-Know-JS》作者

譯者團隊(排名不分先後):阿希、blueken、brucecham、cfanlife、dail、kyoko-df、l3ve、lilins、LittlePineapple、MatildaJin、冬青、pobusama、Cherry、蘿蔔、vavd317、vivaxy、萌萌、zhouyao

關於譯者:這是一個流淌著滬江血液的純粹工程:認真,是 HTML 最堅實的樑柱;分享,是 CSS 裡最閃耀的一瞥;總結,是 JavaScript 中最嚴謹的邏輯。經過捶打磨練,成就了本書的中文版。本書包含了函數式編程之精髓,希望可以協助大家在學習函數式編程的道路上走的更順暢。比心。

本書主要探索函數式編程[1](FP)的核心思想。在此過程中,作者不會執著於使用大量複雜的概念來進行詮釋,這也是本書的特別之處。我們在 JavaScript 中應用的僅僅是一套基本的函數式編程概念的子集。我稱之為“輕量級函數式編程(FLP)”。

注釋: 題目中使用了“輕量”二字,然而這並不是一本“輕鬆的”“入門級”書籍。本書是嚴謹的,充斥著各種複雜的細節,適合擁有紮實 JS 知識基礎的閱讀者進行研讀。“輕量”意味著範圍縮小。通常來說,關於函數式編程的 JavaScript 書籍都熱衷於拓展閱讀者的知識面,並企圖覆蓋更多的知識點。而本書則對於每一個話題都進行了深入的探究,儘管這種探究是小範圍進行的。

讓我們面對這個事實:除非你已經是函數式編程高手中的一員(至少我不是!),否則類似“一個單子僅僅是自函子中的么半群”這類說法對我們來說毫無意義。

這並不是說,各種複雜繁瑣的概念是無意義的,更不是說,函數式編程者濫用了它們。一旦你完全掌握了輕量的函數式編程內容,你將會/但願會想要對函數式編程的各種概念進行更正式更系統的學習,並且你一定會對它們的意義和原因有更深入的理解。

但是我更想要讓你能夠現在就把一些函數式編程的基礎運用到 JavaScript 編程過程中去,因為我相信這會協助你寫出更優秀的,更符合邏輯的代碼。

更多關於本書背後的動機和各種觀點討論,請參看[前言]。

JavaScript 輕量級函數式編程目錄
  • 引言 (by Brian Lonsdorf aka "Prof Frisby")
  • 前言
  • 第 1 章:為什麼使用函數式編程? * 信賴度 * 交流渠道 * 可讀性曲線 * 接受 * 你不需要它 * 資源
    * 書籍推薦
    * 部落格和網站
    * 一些庫 * 總結
  • 第 2 章:函數基礎 * 什麼是函數?
    * 簡要的數學回顧
    * 函數 vs 程式 * 函數輸入
    * 輸入計數
    * 隨著輸入而變化的函數 * 函數輸出
    * 提前 return
    * 未 return 的輸出 * 函數功能
    * 保持範圍 * 句法
    * 什麼是名稱?
    * 沒有 function 的函數 * 來說說 This ? * 總結
  • 第 3 章:管理函數的輸入(Inputs) * 立即傳參和稍後傳參
    * bind(..)
    * 將實參順序顛倒 * 一次傳一個
    * 柯裡化和偏應用有什麼用?
    * 如何柯裡化多個實參?
    * 反柯裡化 * 只要一個實參
    * 傳一個返回一個
    * 恒定參數 * 擴充在參數中的妙用 * 參數順序的那些事兒
    * 屬性擴充 * 無形參風格 * 總結
  • 第 4 章:組合函數 * 輸出到輸入
    * 製造機器
    * 組合的變體
    * 萬用群組合
    * 不同的實現 * 重排序組合 * 抽象
    * 將組合當作抽象 * 回顧形參 * 總結
  • 第 5 章:減少副作用 * 什麼是副作用
    * 潛在的原因
    * I/O 效果
    * 其他的錯誤 * 一次就好
    * 數學中的等冪
    * 編程中的等冪 * 純粹的快樂
    * 相對的純粹 * 有或者無
    * 思考上的透明
    * 不夠透明? * 純化
    * 封閉的影響
    * 覆蓋效果
    * 迴避影響 * 總結
  • 第 6 章:值的不可變性 * 原始值的不可變性 * 從值到值
    * 消除本地影響 * 重新賦值
    * 意圖
    * 凍結 * 效能 * 以不可變的眼光看待資料 * 總結
  • 第 7 章: 閉包 vs 對象 * 達成共識 * 相像
    * 狀態
    * 行為,也是一樣!
    * (不)可變
    * 同構 * 同根異枝
    * 結構可變性
    * 私人
    * 狀態拷貝
    * 效能 * 總結
  • 第 8 章:列表操作 * 非函數式編程列表處理 * 映射
    * 映射 vs 遍曆
    * 一個詞:函子 * 過濾器 * Reduce
    * Map 也是 Reduce
    * Filter 也是 Reduce * 進階列表操作 * 方法 vs 獨立 * 查尋列表 * 融合 * 列表之外 * 總結
  • 第 9 章:遞迴 * 定義 * 為什麼選擇遞迴 * 聲明式遞迴 * 重構遞迴 * 總結
  • 第 10 章:非同步函數式 * 時間狀態 * 積極的 vs 惰性的 * 響應式函數式編程 * 總結
  • 第 11 章:融會貫通 * 準備 * 股票資訊 * 股票行情介面 * 總結
  • 附錄 A: Transducing
  • 首先,為什麼
  • 如何,下一步
  • 最後
  • 總結
  • 附錄 B: 謙虛的 Monad
  • 類型
  • 鬆散介面
  • Maybe
  • Humble
  • Humility
  • 總結
  • 附錄 C: 函數式編程函數庫
  • Ramda (0.23.0)
  • Lodash/fp (4.17.4)
  • Mori (0.3.2)
  • 總結
關於出版

本書主要在 on Leanpub 平台上以電子版本的形式進行出版。我也嘗試出售本書的紙質版本,但沒有確定的方案。

除了購買本書以外,如果你想要對本書作一些物質上的捐贈,請在 patreon 上進行操作。本書作者感謝你的慷慨解囊。

Patreon

Contributions

非常歡迎對於本書的任何內容貢獻。但是在提交 PR 之前請務必認真閱讀 Contributions Guidelines。

License & Copyright

本書所有的材料和內容都歸屬 (c) 2016-2017 Kyle Simpson 所有。


本書根據Creative Commons Attribution-NonCommercial-NoDerivs 4.0 Unported License 進行授權許可.

  1. FP,本書統稱為函數式編程。

  2. FPer,本書統稱為函數式編程者。

P.S.  整理的好辛苦 %》——《%

全本 | iKcamp翻譯 | 《JavaScript 輕量級函數式編程》|《你不知道的JS》姊妹篇

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.