如果Hask是所有的Haskell類型類別(以功能爲箭頭),然後可以我們認爲ob(Hask)
(即Hask的對象的集合),以*
平等?這種'*`可以被認爲是'ob(Hask)'嗎?
如果沒有,那麼這是什麼意思呢?
如果Hask是所有的Haskell類型類別(以功能爲箭頭),然後可以我們認爲ob(Hask)
(即Hask的對象的集合),以*
平等?這種'*`可以被認爲是'ob(Hask)'嗎?
如果沒有,那麼這是什麼意思呢?
在這一點上,每次有關Hask的問題都會被提出時,它必定是鏈接到Hask article on the Haskell wiki的一種陳詞濫調,但在這裏。
爲了擴大對維基一點我認爲這個問題的答案是非常枯燥的,是的,但僅僅是因爲Hask是定義這樣Hask的對象是各類那種⭑。完整的定義是:
讓每一種類型的⭑都是Hask的對象,除了undefined
。我認爲「是」基本上是你的問題的答案,直到惡魔的倡導者提出undefined
和seq
,此時答案必然變得越來越複雜。
讓類型爲A -> B
的每個函數都是從對應於類型A
的對象到對應於類型B
的對象的箭頭。
非常小心choose a notion of equality for the arrows, which may or may not exist(see ensuing discussion)或可能丟棄seq
或者完全放棄。
讓對應於id :: A -> A
的箭頭成爲每個對象的標識箭頭。
.
讓,這是締&角,對應於箭頭的組合物,它必須是締&℃。
這決不意味着你可以Haskell程序與模型中唯一的類別,但我們做到這一點,與Hask名祝福,因爲很多其他概念的話,自然對應哈斯克爾計算。例如,這個類別的內幕管理者可以方便地用類似⭑ - >⭑的方式來表示,其中(合法)功能取決於fmap :: ((a :: ⭑) -> (b :: ⭑)) -> ((f a :: ⭑) -> (f b :: ⭑))
。
是的,但在Haskell中有*
以外的其他類型,DataKinds
將不會成爲您的Hask類別的一部分。
{-# LANGUAGE DataKinds #-}
data Foo = Bar
'Bar
的一種是Foo
,所以你不能用它->
,所以這將是你的Hask之外,但仍然是一個Haskell的類型。