簡體   English   中英

Haskell 類型類實例中的 Kind Constraint 是什么意思?

[英]What Does Kind Constraint mean in Haskell typeclass instance?

當Haskell中的類約束類型變量時,我明白這意味着什么。

例如,在 function 聲明中,

myFunction :: Foldable f => f a -> b

意味着 f 是一個具有 Foldable 實例的類型,它包裝了一些其他類型 a。

但是,當類型變量受種類約束時,這意味着什么?

例如考慮可折疊的這個定義:

class Foldable (t :: * -> *) where

此外,1 個示例來自 function 定義而另一個示例來自 class 定義這一事實對約束的含義有何影響?

t:: * -> *不是約束,它是一種注解。 在這種情況下,它用於說明Foldable可以采用 arguments 類型構造函數,例如MaybeIdentity[] ,甚至部分應用的構造函數,例如Either Bool(,) String 相比之下, Foldable IntFoldable [Bool]屬於類錯誤。

t:: * -> *可以理解為“ t將類型映射到類型”。

關鍵是,當我們有Foldable f時,我們會像在fa中一樣使用f ,將f應用於一個參數。 如果我們允許f = Maybe我們得到Maybe a這是有道理的。 如果我們允許f = Int ,我們將得到無意義Int a

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM