每一個 Haskell 中的「範疇論的」概念都可以去 co 嗎?
01-08
如
Monad ←→ ComonadState ←→ StoreCont ←→ Cont (自對偶)
謝邀。先大致給個結論,這個是範疇論中的對偶性,一般是滿足的。有任何問題歡迎指出。
先給一張去年畫的圖鎮樓。
範疇論的對偶性是指範疇中的數學結構存在一個對偶的數學結構,其和原來的數學結構保持對象不變,但是其態射的方向是相反的。
比如product和coproduct,其結構完全一樣,唯一不同的就是態射的方向是相反的。
其實我覺得Haskell中的範疇的大部分概念都可以由(a,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?