簡體   English   中英

`forall a -> b` 語法是什么意思?

[英]What does the `forall a -> b` syntax mean?

在GHCi中, FUN的種類是這樣顯示的:

λ> :k FUN
FUN :: forall (n :: Multiplicity) -> * -> * -> *

起初,我認為這是一種迂回的說法

FUN :: Multiplicity -> * -> * -> *

但事實證明模板 Haskell 有一個單獨的構造函數用於此表單: ForallVisT 我找不到關於它的任何文檔,而且我什至不知道如何以有意義的方式開始試驗它。

這個語法是什么意思? forall a -> bforall a. a -> b forall a. a -> b

當結果類型取決於顯式參數時,使用forall a -> _

-- type NonDep :: Type -> Type; argument is explicit
data NonDep (x :: Type) :: Type
-- type ImpDep :: forall a. Maybe a -> Type; first argument is implicit and dependent
data ImpDep (x :: Maybe a) :: Type
-- so if you want an explicit and dependent argument...
-- type ExpDep :: forall (a :: Type) -> Maybe a -> Type
data ExpDep (a :: Type) (x :: Maybe a) :: Type

奇怪的是FUN的類型有forall (m:: Multiplicity) ->而不是Multiplicity ->因為下面的 arguments (兩個隱式RuntimeRep s 和兩個TYPE s)不依賴於它,但這就是周圍的怪異GHC 原語。

暫無
暫無

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

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