iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 30
0

終於結束了!!!在這 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 天的主題,如果對這些主題有興趣,用它們來當作關鍵字,應該能搜尋到不少文章才對。

參考資源

以下這些資源大部分都有在文章放過了,但是還是在這邊做個整理與推薦:

  • Category Theory for programmer: 極度推薦給想要好好了解 Monad 與 Functor 的各位,不只有 Youtube 可以看還有實體書。
  • Functional and Reactive Domain modeling:一本結合了許多領域與實踐的書,語言是使用 Scala。內容包含了 functional programming 、Domain Driven Design、Reactive programming。
  • raywenderlich.com:一個有很多線上學習資源的網站,其中有一個作者寫了很多有關 Arrow 的文章,還在持續更新中
  • Youtube channel - jasonofthel33t:這個頻道中有非常多的 functional programming 影片,其中對 Monad 的介紹那一支(Don't fear the Monad),是我看過的版本中最好懂的。
  • Kotlin weekly:會來看這系列文章的應該蠻多 Kotlin 開發者的,每一週的週日都會定期更新精選文章,對於 Kotlin 開發者都很有幫助,其中也不時會有 functional programming 相關的文章上架。

致謝

最後感謝我女友,為了寫這些文章少了很多陪她的時間,Kotlin 鐵人陣的各位,有了彼此加油打氣,在寫作的路上不會孤單,當然還有來看本系列文章的各位,任何追蹤、回饋、糾正錯誤,都是我持續寫作的最大動力來源,非常感謝大家收看!


上一篇
Functional Programming in Practice - Part 3
系列文
Functional Programming in Kotlin30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言