4
(->)
(a -> b
as $ b^a $)的指數解釋如何(如果有的話)推廣到除Hask/Set以外的類別?例如,對於非確定性函數類別的解釋看起來大致爲Kliesli [] a b
爲$ 2 ^(a * b)$(a - > b - > Bool)。指數類型的推廣
(->)
(a -> b
as $ b^a $)的指數解釋如何(如果有的話)推廣到除Hask/Set以外的類別?例如,對於非確定性函數類別的解釋看起來大致爲Kliesli [] a b
爲$ 2 ^(a * b)$(a - > b - > Bool)。指數類型的推廣
除了Hask/Set之外,指數的概念可以用一般術語定義。指數和產品類別稱爲cartesian closed category。這是理論計算機科學的一個關鍵概念,因爲每一個c.c.類別本質上是一個類型化的lambda演算模型。
粗略地說,在一個笛卡兒閉範疇爲任何一對對象a,b
的存在:
(a * b)
,和(b^ab)
與態射
eval : (b^a)*a -> b
(哈斯克爾:\(f,x) -> f x
,AKA適用)f : (a*b)->c
,存在Lf : a -> (c^b)
(哈斯克爾:curry f
)滿足方程 「他們在演算享受」,即如果f : (a*b)->c
,然後:
f = (Lf * id_a) ; eval
在Haskell,最後的方程爲:
f = \(x :: (a,b), y :: a) -> apply (curry f x, id y) where apply (g,z) = g z
,或者使用箭頭,
f = (curry f *** id) >>> apply where apply (g,z) = g z
我不知道我理解你的要求。指數可以在任何笛卡爾封閉類中找到。 http://en.wikipedia.org/wiki/Cartesian_closed_category – chi
「a - > b」的指數解釋是'b^a'。考慮只有'1^a = 1'居民的'a - >()',即'const()'。另一方面,'() - > b'有'b^1 = b'居民,每個居民'b'一個。 – Cirdec
更正。謝謝。 –