C#作為一個OOP語言拿來寫FP? 有沒有搞錯?
其實C#有不少FP的特性,像是寫C#不可不知的Linq
本系列打算從C#的delegate、pattern match、record等等開始
慢慢了解FP的設計風格
讓我習慣OO的腦袋突破舒適圈
昨天講到了不可變的集合,今天再介紹C#中另一個具有不可變特性的的元素-Record,進入用C#寫FP的重點了! 基本介紹 如何建立一個Record // 跟...
昨天大概介紹了record的功能,今天來介紹一下可以怎麼使用。 觀察資料流程 假設今天有一個csv格式的資料,我想要把他整理成容易使用的方式 var csv =...
在前幾天的內容中常常提到純函數、副作用,但究竟是什麼意思呢?我覺得並不好解釋,但是我們可以觀察: 給定相同的輸入,就會得到相同的輸出 在Day2與Day3,...
假設今天要設計一個貼文的系統,一則貼文有內容跟作者,具有草稿狀態與發布狀態,並且有修改與確定內容的功能 物件導向建模 我們會建立一個貼文的物件,這個物件中具...
今天要討論錯誤處裡,我們在前面介紹了Option型別來解決函數沒有對應的問題,但有的時候我們除了沒有對應結果外,可能需要其他的訊息,像是什麼輸入沒有結果,或者是...
目前我們介紹了兩個型別,分別是Option與Either,操作上相當於隔著一層容器對裡面的資料做操作,在FP的世界裡面設計了各種不同的型別,但都具有這種“容器”...
昨天介紹了三條monad laws,構成monad的元素,只要滿足了就可以讓我們享受到monad的好處,而這些好處其實我們非常熟悉。 Callback Hell...
C#中的Task物件其實可以視為一個Monad,今天要介紹Task的一些特性,並且幫它補上擴充方法。 Task Monad 觀察Task物件,我們可以知道兩件事...
進入.Net core後,C#大量使用非同步方法,像是從使用EF core從DB取得資料。我們經常會遇到當API接收到request後,需要針對request的...
再看一次昨天的程式碼的片段 GetMemberByNameAsync(name) .TaskBind(member => member .Ma...