iT邦幫忙

鐵人檔案

2022 iThome 鐵人賽
回列表
Software Development

Functional Programming with C# 系列

C#作為一個OOP語言拿來寫FP? 有沒有搞錯?
其實C#有不少FP的特性,像是寫C#不可不知的Linq
本系列打算從C#的delegate、pattern match、record等等開始
慢慢了解FP的設計風格
讓我習慣OO的腦袋突破舒適圈

鐵人鍊成 | 共 30 篇文章 | 9 人訂閱 訂閱系列文 RSS系列文 團隊問一下神奇海螺叫什麼
DAY 11

Day11. Record(1)

昨天講到了不可變的集合,今天再介紹C#中另一個具有不可變特性的的元素-Record,進入用C#寫FP的重點了! 基本介紹 如何建立一個Record // 跟...

2022-09-22 ‧ 由 marvinhsu 分享
DAY 12

Day12. Record(2)

昨天大概介紹了record的功能,今天來介紹一下可以怎麼使用。 觀察資料流程 假設今天有一個csv格式的資料,我想要把他整理成容易使用的方式 var csv =...

2022-09-23 ‧ 由 marvinhsu 分享
DAY 13

Day13. Pure Function

在前幾天的內容中常常提到純函數、副作用,但究竟是什麼意思呢?我覺得並不好解釋,但是我們可以觀察: 給定相同的輸入,就會得到相同的輸出 在Day2與Day3,...

2022-09-24 ‧ 由 marvinhsu 分享
DAY 14

Day14. Modules

假設今天要設計一個貼文的系統,一則貼文有內容跟作者,具有草稿狀態與發布狀態,並且有修改與確定內容的功能 物件導向建模 我們會建立一個貼文的物件,這個物件中具...

2022-09-25 ‧ 由 marvinhsu 分享
DAY 15

Day15. Either

今天要討論錯誤處裡,我們在前面介紹了Option型別來解決函數沒有對應的問題,但有的時候我們除了沒有對應結果外,可能需要其他的訊息,像是什麼輸入沒有結果,或者是...

2022-09-26 ‧ 由 marvinhsu 分享
DAY 16

Day16. Monad(1)

目前我們介紹了兩個型別,分別是Option與Either,操作上相當於隔著一層容器對裡面的資料做操作,在FP的世界裡面設計了各種不同的型別,但都具有這種“容器”...

2022-09-27 ‧ 由 marvinhsu 分享
DAY 17

Day17. Monad(2)

昨天介紹了三條monad laws,構成monad的元素,只要滿足了就可以讓我們享受到monad的好處,而這些好處其實我們非常熟悉。 Callback Hell...

2022-09-28 ‧ 由 marvinhsu 分享
DAY 18

Day18. Task(1)

C#中的Task物件其實可以視為一個Monad,今天要介紹Task的一些特性,並且幫它補上擴充方法。 Task Monad 觀察Task物件,我們可以知道兩件事...

2022-09-29 ‧ 由 marvinhsu 分享
DAY 19

Day19. Task(2)

進入.Net core後,C#大量使用非同步方法,像是從使用EF core從DB取得資料。我們經常會遇到當API接收到request後,需要針對request的...

2022-09-30 ‧ 由 marvinhsu 分享
DAY 20

Day20. SelectMany(1)

再看一次昨天的程式碼的片段 GetMemberByNameAsync(name) .TaskBind(member => member .Ma...

2022-10-01 ‧ 由 marvinhsu 分享