国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

SegmentFault 技術周刊 Vol.16 - 淺入淺出 JavaScript 函數式編程

csRyan / 1541人閱讀

摘要:函數式編程,一看這個詞,簡直就是學院派的典范。所以這期周刊,我們就重點引入的函數式編程,淺入淺出,一窺函數式編程的思想,可能讓你對編程語言的理解更加融會貫通一些。但從根本上來說,函數式編程就是關于如使用通用的可復用函數進行組合編程。

函數式編程(Functional Programming),一看這個詞,簡直就是學院派的典范。

以至于從 Lisp 的創世,到 Scheme、Haskell、Clean、Erlang、Miranda、Scala、LOGO、Clojure、Mathematica 甚至 R,它們一出生就站在了鄙視鏈的頂端,尤其是非純函數式的 Lisp 老祖和純函數式的集大成者 Haskell。就如段子里說的,一群程序員自我介紹,當聽到“我是寫 Lisp 的…”這一句,所有人的注意力都會被吸引。簡直是眾多程序員想要裝逼的頂峰,可見一斑。

學院派的語言方法似乎只有大學研究里才會使用,但隨著技術和時代的發展,JavaScript,這種典型的多范式編程語言,也由面向對象為絕對主導逐漸納入各種函數式編程的特性,這兩年的 React、TypeScript、Immutable、underscore、Elm 等等,紛紛加入了函數式編程的大潮。所以這期周刊,我們就重點引入 JavaScript 的函數式編程,淺入淺出,一窺函數式編程的思想,可能讓你對編程語言的理解更加融會貫通一些。

淺入

1. 什么是函數式編程?

JavaScript 函數式編程(一) 丨 JavaScript 函數式編程(二) // 王偉嘉

這兩篇將 JS 函數式編程的典型特性“1. 純函數概念,函數柯里化和函數的組合;2. 容器和 Functor,Maybe,Monad,Either 以及 IO”由淺及深,一個個地做了介紹,非常不錯的入門文章。

「所謂的純函數就是,對于相同的輸入,永遠會得到相同的輸出,而且沒有任何可觀察的副作用,也不依賴外部環境的狀態。」

2. 函數式思想的理解

《JavaScript 函數式編程》讀書筆記 // homker

這是作者對《JavaScript 函數式編程》的理解,JS 為什么要用函數式編程(數據和行為的關系、專注于過程本身),如何使用函數式編程(一等公民、純函數、可組合、高階函數、基于流的編程),可以讓你更深入地理解 JS 大量引入函數式方法的思想。

譯丨JavaScript 與函數式編程 // 文藺

現在,來進行更細節的分析和理解
展現另一面的函數式編程思維:強調將程序狀態變化(即副作用 side effect)的次數減到最小,鼓勵使用不可變數據(immutable data)和純函數(pure functions)(“純”意味著沒有副作用的),更傾向于使用聲明式的風格(讓代碼更干凈,可讀性更強,推理起來更簡單)。

3. 特性各個了解

在下函數式編程有何貴干 // 力譜宿云

示例代碼清晰,簡單明了,讓你快速了解 FP 的諸多特性,接下來,再一一分解。

譯丨JavaScript 中的不可變性(Immutability) // leftstick

譯丨淺入淺出 Monads // leftstick

JavaScript 也玩私人訂制——玩轉函數柯里化 // 條件狀語從句

函數式編程中局部應用(Partial Application)和局部套用(Currying)的區別 // n?i?g?h?t?i?r?e?

函數式編程之柯里化和組合詳解 // 橘子小睿

前面提到的純函數、函數柯里化、函數的組合、偏函數、容器、Functor、Monad、IO 等等,這里都有分別的詳細講解。

淺出

4. 各 JS 方言都有了哪些實踐?

譯丨函數式 TypeScript // 文藺

「談到函數式編程時,可能常被提到的是機制、方法,而不是核心原則。但從根本上來說,函數式編程就是關于如使用通用的可復用函數進行組合編程。」——作者在重構 TypeScript 代碼時使用函數式的一些思考

函數式編程——入門筆記與 React 實踐 // kpaxqin

Immutable 詳解及 React 中實踐 // Cam

Redux 入坑進階 - 源碼解析 // ecmadao

React.js 的代碼中包含了大量函數式思想,比如 Immutable,比如 Redux 的柯里化函數以及代碼組合,不妨來看看。

Elm 入門實踐系列 by @kpaxqin :(一)基礎篇 丨 (二)類型篇 丨 (三)進階篇

笨辦法學函數式編程:Elm 初體驗 // Integ

如果你打算開始函數式編程,晦澀的 Monad/Functor 們可能也需要動手寫點東西來熟悉,而隨著整個 React 社區往函數式方向發展,Elm 作為前端函數式編程的先驅和風向標,毫無疑問是值得去學習和借鑒的。這兩個系列,一步步地帶你了解如何使用 Elm 構建應用。

5. 函數式的思想在其他語言中的體現

函數式編程在實際生產中發揮著巨大的作用,越來越多的語言加入閉包,匿名函數等非常典型的函數式編程的特性,從某種程度上來講,函數式編程正在逐步“同化”命令式編程。

Swift - Swift 中的柯里化 Currying:Swift 柯里化特性的簡單了解

Scala - Scala 類型參數:多范式語言的典范

Java - Java8 Lambda 本質論 丨 正交設計 丨 Write Lean Programs:Java 的設計模式、λ 演算、設計思想

Scheme - 如何實現一個沒有名字的遞歸函數:一個遞歸引發的思考 - “當函數在還沒有定義完整時,為什么能夠直接調用的呢?”

6. 補充閱讀

JavaScript 函數式真正的淺析

JavaScript 數組分組的實現

Immutable.js 初識

js 函數式編程之函數柯里化

合理的使用純函數式編程

淺談函數式編程和函數響應式編程

正交設計,OO 與 SOLID

(本期完)

# SegmentFault 技術周刊 #

「技術周刊」是社區特別推出的技術內容系列,一周一主題。周刊篩選的每篇內容,是作者的獨到見解,踩坑總結和經驗分享。

每周二更新,歡迎「關注」或者「訂閱」。大家也可以在評論處留言自己感興趣的主題,推薦主題相關的優秀文章。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/91351.html

相關文章

  • 端到端測試神器 cypress 淺入淺出

    摘要:我之前寫過關于的文章,,最近在工作中用到比較多了,頓時覺得確實是比較優秀的一個。 我之前寫過關于cypress的文章,https://segmentfault.com/a/11...,最近在工作中用到cypress比較多了,頓時覺得cypress確實是比較優秀的一個。 1. 軟件安裝. 2. 安裝cypress 安裝cypress客戶端:http://download.cypress...

    CarlBenjamin 評論0 收藏0
  • 淺入淺出FlowDroid(一): 簡介&基本使用

    摘要:后文將圍繞做一些介紹。盡管如此,的使用對新手而言仍然充滿了困難。本系列文章基本為個人見解,難免有錯誤與誤解,如有客觀錯誤歡迎提出。 前言 說到Android的污點分析框架,網上的搜索結果大多指向靜態的FlowDroid與動態的TaintDroid。盡管由于加固、混淆等技術使得針對Android的靜態分析越來越困難,但靜態分析的無先驗分析能力無法被動態分析取代,使得靜態分析仍有發揮空間。...

    wqj97 評論0 收藏0
  • [譯]淺入淺出Monads

    摘要:接受另一個函數作為參數,然后用接受的這個新函數處理,將結果再次傳給,最后將實例化的新對象返回。空值檢查就是個不錯的例子這個實現里,只在為合法值非空時,傳入。但不論怎么變化,她們也都和一樣遵守上面提到的規則。 大多數關于monad的教程都和老太太的裹腳布一樣,又臭、又長,說不清、道不明。當然我也不偉大,沒法保證我寫的一定更明了,更生動,甚至更屌?不過我至少可以確定,我這篇更簡潔。浪費不了...

    philadelphia 評論0 收藏0
  • Vue-cli淺入淺出

    摘要:別名相當于前面先引入了路由插件,然后顯式聲明要用路由。注意到,等都是頁面也可以是組件,接著注冊路由器,然后開始配置路由。 搭建環境 工欲善其事必先利其器,我們的學習計劃從學會搭建Vue所需要的環境開始,node和npm的環境不用說是必須的,現在前端流程化很熱門,基本上新的技術都會在這套流程的基礎上做開發,我們只需要站在巨人的XX上裝*就可以了。我假設你的機子上已經有了最新的node和n...

    endiat 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<