每一個 Haskell 中的「範疇論的」概念都可以去 co 嗎?

Monad ←→ Comonad

State ←→ Store

Cont ←→ Cont (自對偶)


謝邀。先大致給個結論,這個是範疇論中的對偶性,一般是滿足的。有任何問題歡迎指出。

先給一張去年畫的圖鎮樓。

範疇論的對偶性是指範疇中的數學結構存在一個對偶的數學結構,其和原來的數學結構保持對象不變,但是其態射的方向是相反的。

比如product和coproduct,其結構完全一樣,唯一不同的就是態射的方向是相反的。

其實我覺得Haskell中的範疇的大部分概念都可以由(a,b)和 c^b 構成的伴隨,product和coproduct構成的伴隨擴展得到,因此有上面這張鎮樓的圖。

伴隨函子是範疇論中的一個非常基礎的概念,所有範疇論中的數學概念都可以通過伴隨函子來構造得到,Kan擴展也是可以通過伴隨函子來構造得到的。

Haskell編程中遇到的這些State、Costate、Yoneda、Coyoeda、Product、Coproduct、Limit、Colimit、F-alg、F-coalg、Monad、Comonad概念,都是可以由伴隨函子來構造得到的。

先簡單寫這麼多,後續有空再加吧!


推薦閱讀:

Haskell的Lens是一個怎樣的庫?
如何解釋 Lisp 中 call/cc 的概念?
如何向一個只有命令式編程背景的人解釋函數式編程中的函數?
如何看待編程語言越來越大的趨勢?
怎樣理解 Continuation-passing style?

TAG:抽象代數 | 函數式編程 | Haskell | 範疇論 |