終於結束了!!!在這 30 天的過程中學習到許多東西,也經歷了許多不同的心路歷程,從一開始的雄心壯志,提前規劃好所有的章節,本來以為所有的內容有九成的把握了,寫這些文章的負擔不大才對,但是現實是。實際執行起來困難重重,其中有幾篇還花了 3 - 4 小時以上來寫。而且依照原本規劃,Monad 是放在中間寫的,但是我寫到一半才發現,原來我腦中想像的理論是拼湊不起來的,所以趕緊踩煞車,重新調整文章順序,才有後來的 Monad 三部曲。
還有原本也預期說,最後三篇的實作,要涵蓋許多不同的面相,畫出完整的架構圖,組合不同的 Monad 等等,而且要在中秋連假中把這些都準備好,可是人算不如天算,這時候已經出現寫作疲乏了,實在沒辦法提起太多的勁完成這些,所以請原諒我,之後我心有餘力時,會再回頭補上的,更新在鐵人幫的系列文中,另外也會寫在我個人的 Medium 裡。
還有一些原本想寫,沒寫出來的內容,像是 Monad comprehensions ,還記得當我第一次看見他時,已經算是對 flatMap
想當得心應手了,但是這種寫程式的方式真的超乎我想像,驚嘆連連,後來,竟然也在 Arrow
的函式庫中發現他,他在 Arrow
中是以 Arrow-fx
的形式存在,在試用之後也超級佩服函式庫的貢獻者,竟然能夠想到用這種方式來實現它。但我為什麼沒介紹他呢?最主要的原因還是我無法在 side project 中成功導入他,我個人還不是非常的熟悉,經由一番考量後,還是將 這篇取代為 “Monad 到底那裡好用了?”,對於可能剛接觸 FP 沒多久的讀者,這心得比較值得分享給大家。
Monad comprehensions: https://arrow-kt.io/docs/patterns/monad_comprehensions/
另外還有各種不同的 Monad , State Monad、IO Monad、Writer Monad,還有 Monad transformer、Applicative,都是有列入考慮但是後來沒放進 30 天的主題,如果對這些主題有興趣,用它們來當作關鍵字,應該能搜尋到不少文章才對。
以下這些資源大部分都有在文章放過了,但是還是在這邊做個整理與推薦:
最後感謝我女友,為了寫這些文章少了很多陪她的時間,Kotlin 鐵人陣的各位,有了彼此加油打氣,在寫作的路上不會孤單,當然還有來看本系列文章的各位,任何追蹤、回饋、糾正錯誤,都是我持續寫作的最大動力來源,非常感謝大家收看!