2016-07-27 58 views

回答

2

我們可以在Haskell定義功能成分和標識功能,如:

這是好的。然而,還有其他一些外觀和行爲類似於功能的東西,我們想定義其組成和身份。他們服從相同的法律,所以重複使用這些符號並將它們定義在一個通用類型類中是有意義的。

爲什麼這是一個有用的概括?一個例子是單子的克萊斯利箭頭。對於某些monad,這些函數的格式爲a -> m b。能夠將這些東西像函數組合起來是非常有用的,有時可以用一般性的方式來談論構圖,不管是用於函數還是用Kleisli箭頭,或者其他類似功能的東西。

Category類與purescript-profunctor庫中的Strong類配對變得更有用。這是因爲一個強大的團隊也是一個類別,相當於一個Arrow。有大量現有文獻記錄了Arrow課程的用處。

要回答你原來的問題,注意上面的類型在SemigroupoidCategory類中定義的更一般類型的一個特殊情況:

id :: k a a 
compose :: k b c -> k a b -> k a c 

,因爲我們可以隨便挑k是功能箭頭(->)

相關問題