函數範式
如今是一個很"時髦"的詞, 彷彿什麼語言,庫帶上了函數式
就變得高大上起來了. 但實際上我問過不少人什麼是函數式?
, 幾乎的回答都是lambda表達式
, 能夠傳遞函數
, Java8流式API
或者RxJava
等等. 固然這些也是函數範式帶來的東西, 但始終都沒有點到核心, 或者說"咱們爲何須要這些東西". 在沒有明白函數範式真正想要達到的事情以前, 盲目使用這些函數式工具無異於殺豬用牛刀.react
除此以外其實也有很多人也嘗試去理解真正的函數範式, 但函數範式中包含大量高度抽象的概念和數據結構, 一上來就是單子
, 自函子
, 幺半羣
, Monoid
, Monad
等等範疇論的概念; 一樣因爲函數範式提倡用少許高度優化的數據結構實現複雜功能, 每種數據結構都一樣難以理解; 加上Haskell中的do語法這些工具在Java和Kotlin中原生並無, 實踐起來也極其困難, 直接勸退了大量的學習者.git
但雖然函數範式很是抽象, 但也很是強大, 並且也很是實用, 本人已經在大量的實際項目和庫中使用了其思想, 或者說如今已經被"嚴重毒害"了(笑). 就實際經驗經驗而言, 它是能夠很是按部就班地融入項目, 而對項目確實能很是好地控制項目的複雜度. github
但本人其實從2016年入坑到如今只有並不長的時間, 也很不學院派, 只是但願後續文章能經過我的的一些實踐經驗回答如下一些問題:編程
文章中儘可能使用Kotlin語言做爲主語言, 但不可避免會間歇插入Haskell
, Scala
的代碼數據結構
與之相應的還有FRP
(functional reactive programming)函數響應式編程, 這個概念也是最近提得不少的, 但大多數人並不能回答"爲何用了它程序就徹底不一樣了", 當並不明白這一點以前, 其實不少地方的用法就是錯誤的, 在以後的文章也許會相應的提到這相關的知識點.函數
本人只是普通的Android開發人員, 時間一般也不太充裕, 文章中有哪些不正確的地方, 歡迎你們提出工具
也歡迎關注我的的Github: Yumenokanata學習