Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
初探 functional programming
Search
CypressKuo
February 03, 2017
Technology
0
110
初探 functional programming
CypressKuo
February 03, 2017
Tweet
Share
More Decks by CypressKuo
See All by CypressKuo
Deep-copying.pdf
cypresskuo
0
19
CSS_for_Web_Vitals.pdf
cypresskuo
0
28
談談_Code_review.pdf
cypresskuo
0
36
REST_vs_GraphQL_今夜はご注文はどっち.pdf
cypresskuo
0
15
CSS_重構.pdf
cypresskuo
0
17
跟上_JS_的腳步-ES2020.pdf
cypresskuo
0
22
Core_Web_Vitals.pdf
cypresskuo
0
44
這個時代人人都知道的敏捷開發.pdf
cypresskuo
0
42
Webassembly.pdf
cypresskuo
0
8
Other Decks in Technology
See All in Technology
OCI Vault 概要
oracle4engineer
PRO
0
9.7k
なぜ今 AI Agent なのか _近藤憲児
kenjikondobai
4
1.4k
rootlessコンテナのすゝめ - 研究室サーバーでもできる安全なコンテナ管理
kitsuya0828
3
390
個人でもIAM Identity Centerを使おう!(アクセス管理編)
ryder472
4
230
第1回 国土交通省 データコンペ参加者向け勉強会③- Snowflake x estie編 -
estie
0
130
障害対応指揮の意思決定と情報共有における価値観 / Waroom Meetup #2
arthur1
5
490
開発生産性を上げながらビジネスも30倍成長させてきたチームの姿
kamina_zzz
2
1.7k
AIチャットボット開発への生成AI活用
ryomrt
0
170
SSMRunbook作成の勘所_20241120
koichiotomo
3
160
[CV勉強会@関東 ECCV2024 読み会] オンラインマッピング x トラッキング MapTracker: Tracking with Strided Memory Fusion for Consistent Vector HD Mapping (Chen+, ECCV24)
abemii
0
230
The Role of Developer Relations in AI Product Success.
giftojabu1
0
140
SREが投資するAIOps ~ペアーズにおけるLLM for Developerへの取り組み~
takumiogawa
1
450
Featured
See All Featured
Speed Design
sergeychernyshev
25
620
VelocityConf: Rendering Performance Case Studies
addyosmani
325
24k
Why Our Code Smells
bkeepers
PRO
334
57k
Into the Great Unknown - MozCon
thekraken
32
1.5k
Embracing the Ebb and Flow
colly
84
4.5k
Why You Should Never Use an ORM
jnunemaker
PRO
54
9.1k
Imperfection Machines: The Place of Print at Facebook
scottboms
265
13k
Automating Front-end Workflow
addyosmani
1366
200k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
27
4.3k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
246
1.3M
RailsConf 2023
tenderlove
29
900
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
Transcript
初探 functional programming in JavaScript CypressKuo @前端組例會 2017/02/03 1
定義 一種程式設計的方法/概念 2
3
4
特色 ✣ Expression, no Statement ✣ First-class ✣ High order
function ✣ No side effect ✣ Referential transparency ✣ Pure Function 5
Expression, no Statement Expression Statement 6
First-class 函數與其他數據類型一樣,處於平等地位。 可以被賦值到其他變數, 也可以作為參數傳入到不同的函數中, 或者作為函數的回傳值。 7
8
9
10
High order function 滿足以下兩項其中之一的函數 ✣ 可以將函式當成參數傳入的函式 ✣ 可以將函式當成回傳值的函式 11
12
✣ .map() ✣ .filter() ✣ .reduce() ✣ .forEach() ✣ .some()
✣ .every() 常見的 High order function 13
No side effect 沒有與外部互動,產生與運算無關的其他結果。 ✣ 發送 http request ✣ 印出
console ✣ 取得使用者的 input 14
Referential transparency 不管外部環境如何,只要參數相同,函式執行的返回結果必定相同。 15
Pure Function 結合 no side effect 與 Referential transparency 一個
function 給予相同的參數, 永遠會回傳相同的返回值,並且沒有任何顯著的副作用 16
17
18
Function Composition ✣ Curry ✣ Compose 19
curry 將一個有 N 個參數的函數轉換成 N 個只有一個參數的函數 20
21
22
compose 把兩個以上的一個參數函數合併起來串聯多個組合成新的函數 23
24
25
優勢 ✣ 可讀性高 ✣ 可維護性高 ✣ 簡潔,開發快速 26
參考資料 http://blog.miniasp.com/post/2016/12/10/Functional-Programming-in-JavaScript.aspx?s=2 http://www.ruanyifeng.com/blog/2012/04/functional_programming.html http://www.slideshare.net/rockncoder/functional-programming-in-javascript-68835257 http://www.slideshare.net/ihower/fp-osdc2012v2 https://github.com/MostlyAdequate/mostly-adequate-guide http://ithelp.ithome.com.tw/articles/10186465 27