發表文章

目前顯示的是有「開發技術類-FP-Currying」標籤的文章

自救必看三大準則

[FP] Currying

圖片
原文: https://medium.com/hannah-lin/fp-currying-3de006469b14 寫得特別好,一看就懂,不得不留存一下。   太多初學者以為會 map、 reduce 就代表會 Functional Programming 了!真的是大錯特錯啊。FP 世界真的古老又博大精深,雖然不算好入門,但熟了之後一定會愛上的,因為好處實在比 OOP 多太多! 三年前其實自己第一次聽到 Currying 腦中也只浮現以下 XD 認真研究後也是有看沒懂。但過了三年習慣用 Functional Programming 寫程式後就發現其實 Currying 概念不斷貫穿在 FP 中,希望這篇能用淺顯的敘述來介紹它。 喔對了為什麼會叫 Currying 是因為是因為這個方法的概念的建立者叫做  Haskell Curry 。 What’s currying? Transforms a function with multiple arguments to a chain of function applications with one argument each 簡單來說就是 “ 把接受多個參數的函數變換成接受一個單一參數就叫做 Currying”  還是不懂沒關係,直接來看例子,以下是一個單純做變數相加的函式 const add = (a, b) => a + b; add(1, 2) // 3 改成 Currying 後就會變 const add = a => b => a + b; add(1)(2) // 3 // ---- below is common way ------- const add1 = add(1) add1(2) // 3 你會發現 Currying 一次只接受  “一個”  參數 它的原理也很簡單,就利用 closure 特性,將 f(a) 存放在 g 中 ,待最後參數 b 傳入,完成運算 g(b)。 Why use currying? DRY ( Don’t Repeat Yourself ): 有別於以往一個函式處理所有事情,Currying 可以將程式碼依功能拆解成更小單元,有助於重複利用 (這也是 FP 精華之一) 一次處理一個參數,提高程式的...