簡體   English   中英

Haskell中的[a]類型是什么?

[英]what is [a] as a type in Haskell?

這個問題是關於Haskell編程語言的類型的。

當我打字

:t []

我得到的回報為:

[] :: [a]

什么是[a]

像這樣重寫它可能會使事情更清晰:

[] :: forall a. [a]

因此,由於haskell不包含任何值,因此無法確定類型並將其保持打開狀態。 如果在帶類型的表達式中使用它,例如

x = []

f :: [Int] -> [Int]
f l = l

y = f x

由於它被用作這種類型,它會自動解析為[Int]

它是一個占位符。 它基本上意味着任何類型都可以去那里。 換句話說,如果您有功能

someFunc :: [Int] -> ()

你可以通過[]到它,因為[][a]這將匹配[Int]通過更換a與混凝土占位符Int類型)。

現在,如果看一下id ,您會發現它的類型a -> a 這意味着它是一個函數,它接受任何類型的對象,並返回相同類型的對象。 有趣的是,由於該函數對給定的對象絕對一無所知(因為它對類型沒有任何約束),因此您知道該函數必須執行以下兩項操作之一:

  1. 返回輸入對象,或者
  2. 返回⊥( 底部 )。

暫無
暫無

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

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