[英]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
。 這意味着它是一個函數,它接受任何類型的對象,並返回相同類型的對象。 有趣的是,由於該函數對給定的對象絕對一無所知(因為它對類型沒有任何約束),因此您知道該函數必須執行以下兩項操作之一:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.