在PureScript,類別類在Control.Category定義如下:id成員在Category類中的類型的意義是什麼?
class Semigroupoid a <= Category a where
id :: forall t. a t t
是什麼類型a t t
表示,什麼是落後定義id
這樣的理由?
在PureScript,類別類在Control.Category定義如下:id成員在Category類中的類型的意義是什麼?
class Semigroupoid a <= Category a where
id :: forall t. a t t
是什麼類型a t t
表示,什麼是落後定義id
這樣的理由?
我們可以在Haskell定義功能成分和標識功能,如:
這是好的。然而,還有其他一些外觀和行爲類似於功能的東西,我們想定義其組成和身份。他們服從相同的法律,所以重複使用這些符號並將它們定義在一個通用類型類中是有意義的。
爲什麼這是一個有用的概括?一個例子是單子的克萊斯利箭頭。對於某些monad,這些函數的格式爲a -> m b
。能夠將這些東西像函數組合起來是非常有用的,有時可以用一般性的方式來談論構圖,不管是用於函數還是用Kleisli箭頭,或者其他類似功能的東西。
Category
類與purescript-profunctor
庫中的Strong
類配對變得更有用。這是因爲一個強大的團隊也是一個類別,相當於一個Arrow
。有大量現有文獻記錄了Arrow
課程的用處。
要回答你原來的問題,注意上面的類型在Semigroupoid
和Category
類中定義的更一般類型的一個特殊情況:
id :: k a a
compose :: k b c -> k a b -> k a c
,因爲我們可以隨便挑k
是功能箭頭(->)
。
它看起來像'a'是箭頭類型,所以它有* *> * - > *'例如'( - >)' – Lee