长度示例中 "List a" 中的 "a" 是什么?
What is the "a" in "List a" in the length example?
我想知道在哪里可以找到有关 Length example 中使用的“a
”的信息。好像是某种类型的?
a
是类型变量。
这意味着类型 List
是多态的(泛型),即 a
可以替换为任何类型(Int
、String
、...) .函数 length
也是多态的。例如,length [1, 2, 3]
将 return 3
,length ["word1", "word2"]
将 return 2
。
[1,2,3]
是一个 List Int
,只能使用 Int 列表的函数必须在其类型签名中包含 List Int
。 ["a", "b"]
是一个 List String
,只能使用字符串列表的函数必须在其类型签名中包含 List String
。适用于任何类型列表(例如 List.length
)的函数可以具有泛型类型签名(例如 List a
或 List b
)。 a
的含义仅与类型签名相关。例如,一个类型为 List a -> a
的函数,当给定一个 List Int
时,它会 return 一个 Int
。当给定一个 List String
时,它将 return 一个 String
。
以 map
函数为例,它的签名是 (a -> b) -> List a -> List b
。它说给定一个函数,它接受一个 a
和 return 一个 b
和一个 List a
,它将 return 一个 List b
.
给定一个接受 String
和 return 一个 Int
和一个 List String
的函数,map
将 return List Int
.
List.map String.length ["a", "aa", "aaa"]
-- [1, 2, 3] : List Int
给定一个接受 Int
和 return 一个 String
和一个 List Int
的函数,map
将 return List String
.
List.map (\n -> String.repeat n "a") [1, 2, 3]
-- ["a", "aa", "aaa"] : List String
我想知道在哪里可以找到有关 Length example 中使用的“a
”的信息。好像是某种类型的?
a
是类型变量。
这意味着类型 List
是多态的(泛型),即 a
可以替换为任何类型(Int
、String
、...) .函数 length
也是多态的。例如,length [1, 2, 3]
将 return 3
,length ["word1", "word2"]
将 return 2
。
[1,2,3]
是一个 List Int
,只能使用 Int 列表的函数必须在其类型签名中包含 List Int
。 ["a", "b"]
是一个 List String
,只能使用字符串列表的函数必须在其类型签名中包含 List String
。适用于任何类型列表(例如 List.length
)的函数可以具有泛型类型签名(例如 List a
或 List b
)。 a
的含义仅与类型签名相关。例如,一个类型为 List a -> a
的函数,当给定一个 List Int
时,它会 return 一个 Int
。当给定一个 List String
时,它将 return 一个 String
。
以 map
函数为例,它的签名是 (a -> b) -> List a -> List b
。它说给定一个函数,它接受一个 a
和 return 一个 b
和一个 List a
,它将 return 一个 List b
.
给定一个接受 String
和 return 一个 Int
和一个 List String
的函数,map
将 return List Int
.
List.map String.length ["a", "aa", "aaa"]
-- [1, 2, 3] : List Int
给定一个接受 Int
和 return 一个 String
和一个 List Int
的函数,map
将 return List String
.
List.map (\n -> String.repeat n "a") [1, 2, 3]
-- ["a", "aa", "aaa"] : List String