31
Python FP 魯蛇喬 @ Tainan.py x MOSUT x FP 2014.11.22

用 Python 寫 FP @ Tainan.py x MOSUT x FP 2014.11.22

Embed Size (px)

DESCRIPTION

MOSUT: https://www.facebook.com/groups/mosut/ Tainan.py: http://www.meetup.com/Tainan-py-Python-Tainan-User-Group/

Citation preview

Page 1: 用 Python 寫 FP @ Tainan.py x MOSUT x FP 2014.11.22

⽤用 Python 寫 FP魯蛇喬 @ Tainan.py x MOSUT x FP 2014.11.22

Page 2: 用 Python 寫 FP @ Tainan.py x MOSUT x FP 2014.11.22
Page 3: 用 Python 寫 FP @ Tainan.py x MOSUT x FP 2014.11.22

暖場:⽤用 Python 寫 FP魯蛇喬 @ Tainan.py x MOSUT x FP 2014.11.22

閃電秀

Page 4: 用 Python 寫 FP @ Tainan.py x MOSUT x FP 2014.11.22

感謝霸氣 hychen 投稿!

Page 5: 用 Python 寫 FP @ Tainan.py x MOSUT x FP 2014.11.22

我先承認今天是標題詐欺保證不會聊到你想聽的 FP o.o”

Page 6: 用 Python 寫 FP @ Tainan.py x MOSUT x FP 2014.11.22

Outline

• 今天不會聊怎麼⽤用 Python 內建的 FP 相關 functions

• 今天不會聊怎麼在 Python ⽤用 FP style 寫扣

• 今天聊有⼈人⽤用 Python 寫出 FP languages (interpreter)

• 但是我不會告訴你怎麼寫 =⼝口=”

• 因為今天是閃電秀 … 何以準備這麼少內容?

Page 7: 用 Python 寫 FP @ Tainan.py x MOSUT x FP 2014.11.22

– 吃掉林北兩天的時間 … 我正在考慮寫部落格⽂文了。

「該死的 Monad。」

Page 8: 用 Python 寫 FP @ Tainan.py x MOSUT x FP 2014.11.22

不聊 Python 內建的 FP functions沒時間啊啊啊啊啊

Part 1

Page 9: 用 Python 寫 FP @ Tainan.py x MOSUT x FP 2014.11.22

• 不討論 Python 的 Lambda

• lambda x: x **2

• 不告訴你怎麼⽤用 map

• map(lambda x: x **2, [1, 2, 3, 4]) #[1, 4, 9, 16]

• 不告訴你怎麼⽤用 filter

• filter(lambda x: x % 3 == 0, [1, 2, 3, 4, 5, 6, 7]) #[3, 6]

• 不告訴你怎麼⽤用 reduce (2.x)

• reduce(lambda x, y: x + y, [1, 2, 3, 4, 5]) #15

四不⼀一沒有

沒有告訴你 function 在 Python 是⼀一等公⺠民

(看那精美的 decorator @)

Page 10: 用 Python 寫 FP @ Tainan.py x MOSUT x FP 2014.11.22

勿⽤用 List Comprehensions

Page 11: 用 Python 寫 FP @ Tainan.py x MOSUT x FP 2014.11.22

不會告訴你要到哪裡查表

• 可以玩玩 partial

Page 12: 用 Python 寫 FP @ Tainan.py x MOSUT x FP 2014.11.22

不聊怎麼在 Python 使⽤用 FP style 寫扣反正聊了也只是被 hychen 打臉

Part 2

Page 13: 用 Python 寫 FP @ Tainan.py x MOSUT x FP 2014.11.22

如果你堅持的話 …

•在 github 上

Page 14: 用 Python 寫 FP @ Tainan.py x MOSUT x FP 2014.11.22

•功能超多!族繁不及備載

Page 15: 用 Python 寫 FP @ Tainan.py x MOSUT x FP 2014.11.22

如果想了解更多 …

Fn.py 作者的投影⽚片: http://kachayev.github.io/talks/

Page 16: 用 Python 寫 FP @ Tainan.py x MOSUT x FP 2014.11.22

有⼈人⽤用 Python 寫出 FP language (Interpreters)

簡短到不⾏行的介紹,⾃自⼰己讀扣吧 XD

Part 3

Page 17: 用 Python 寫 FP @ Tainan.py x MOSUT x FP 2014.11.22

「先不聊這個了,你聽過 16 萬⼈人⼀一起修 AI 課及後來 Udacity 的故事嗎?」

Page 18: 用 Python 寫 FP @ Tainan.py x MOSUT x FP 2014.11.22
Page 19: 用 Python 寫 FP @ Tainan.py x MOSUT x FP 2014.11.22

「先不聊這個了,你聽過 google 吧?」

Page 20: 用 Python 寫 FP @ Tainan.py x MOSUT x FP 2014.11.22
Page 21: 用 Python 寫 FP @ Tainan.py x MOSUT x FP 2014.11.22

100+ lines 的⼩小玩具

Page 22: 用 Python 寫 FP @ Tainan.py x MOSUT x FP 2014.11.22

300+ lines 的⼩小玩具 - 改

Page 23: 用 Python 寫 FP @ Tainan.py x MOSUT x FP 2014.11.22

• Video Demo

Page 24: 用 Python 寫 FP @ Tainan.py x MOSUT x FP 2014.11.22

「怎麼可能跟得上 google 研究總監寫的扣 …」

Page 25: 用 Python 寫 FP @ Tainan.py x MOSUT x FP 2014.11.22

「那來看看⼤大⼀一新⽣生第⼀一堂課的練習題吧 …」

Page 26: 用 Python 寫 FP @ Tainan.py x MOSUT x FP 2014.11.22
Page 27: 用 Python 寫 FP @ Tainan.py x MOSUT x FP 2014.11.22
Page 28: 用 Python 寫 FP @ Tainan.py x MOSUT x FP 2014.11.22

• Video Demo

Page 29: 用 Python 寫 FP @ Tainan.py x MOSUT x FP 2014.11.22

結論

• 演講前勿看 Haskell

• FP101x: workload 4 - 6 hours (week)是騙⼈人的

• 可以適當使⽤用 python 內建的 functional tools

• 可以「玩玩」Fn.py

• 可以⽤用 Python 寫點⼩小玩具

Page 30: 用 Python 寫 FP @ Tainan.py x MOSUT x FP 2014.11.22

「還是可以學⼀一下 Python der …」

總結

避免⽤用太多 FP 之: 別讓 Python 不開⼼心