原文:C#函數式編程

提起函數式編程,大家一定想到的是語法高度靈活和動態的LISP,Haskell這樣古老的函數式語言,往近了說ruby,javascript,F 也是函數式編程的流行語言。然而自從.net支持了lambda表達式,C 雖然作為一種指令式程序設計語言,在函數式編程方面也毫不遜色。我們在使用c 編寫代碼的過程中,有意無意的都會使用高階函數,組合函數,純函數緩存等思想,連表達式樹這樣的idea也來自函數式編 ...

2015-04-06 15:59 5 9886 推薦指數:

查看詳情

C# 函數式編程:LINQ

一直以來,我以為 LINQ 是專門用來對不同數據源進行查詢的工具,直到我看了這篇十多年前的文章,才發現 LINQ 的功能遠不止 Query。這篇文章的內容比較高級,主要寫了用 C# 3.0 推出的 LINQ 語法實現了一套“解析器組合子(Parser Combinator)”的過程。那么這個組合 ...

Sun Sep 30 23:01:00 CST 2018 6 1228
C#函數式編程 - 1

最近閑下來了,准備出一個 C# 搞 FP 的合集。本合集所有代碼均以 C# 8 為示例。 可能你說,為什么要這么做呢?回答:為了好玩。另外,意義黨們請 gun cu ke! C# 有委托,而且有 Func<> 和 Action<>,可以說函數被視為一等功 ...

Mon Sep 09 00:18:00 CST 2019 8 1505
C#函數式編程 - 3

前言 今天和某個人聊天聊到了 C# 的 LINQ,發現我認識的 LINQ 似乎和大多數人認識的 LINQ 不太一樣,怎么個不一樣法呢?其實 LINQ 也可以用來搞函數式編程。 當然,並不是說寫幾個 lambda 和用用像 Java 那樣的 stream 之類的就算叫做 LINQ 了,LINQ ...

Sun Mar 29 08:10:00 CST 2020 2 902
C#函數式編程 - 2

前一陣子在寫 CPU,導致一直沒有什么時間去做其他的事情,現在好不容易做完閑下來了,我又可以水文章了哈哈哈哈哈。 有關 FP 的類型部分我打算放到明年再講,因為現有的 C# 雖然有一個 pattern matching expressions,但是沒有 discriminated unions ...

Mon Dec 09 07:39:00 CST 2019 1 824
C#函數式編程之由函數構建函數

在面向對象的編程中,如果我們需要復用其他的類,我們可以通過繼承來實現。而在函數式編程中我們也可以采取不同的方式來復用這些函數。今天的教程將會講述兩種方式,其中一個就是組合,將多個函數組合成為一個函數,另一個則是之前我們介紹過的部分應用,當然我們將會講述如何將其高級化,來符合我們的使用 ...

Wed Mar 18 00:30:00 CST 2015 1 2538
C#中的函數式編程:遞歸與純函數(二)

在序言中,我們提到函數式編程的兩大特征:無副作用、函數是第一公民。現在,我們先來深入第一個特征:無副作用。 無副作用是通過引用透明(Referential transparency)來定義的。如果一個表達式滿足將它替換成它的值,而程序的行為不變,則稱這個表達式是引用透明的。 現在,我們不妨進行 ...

Thu Apr 05 00:28:00 CST 2018 2 791
C#中的函數式編程:序言(一)

學了那么久的函數式編程語言,一直想寫一些相關的文章。經過一段時間的考慮,我決定開這個坑。 至於為什么選擇C#,在我看來,編程語言分三類:一類是難以進行函數式編程的語言,這類語言包括Java6、C語言等。這類語言由於不支持匿名函數等特性,進行函數式編程會比較困難;一類是自稱“函數式編程語言”的語言 ...

Wed Mar 14 04:38:00 CST 2018 1 932
C#函數式編程之緩存技術

們這里的緩存則集中運用在函數上。 預計算 可能一些人並不能立馬理解這個詞的含義,所以我 ...

Sat Jan 24 20:51:00 CST 2015 7 8600
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM