长度示例中 "List a" 中的 "a" 是什么?

What is the "a" in "List a" in the length example?

我想知道在哪里可以找到有关 Length example 中使用的“a”的信息。好像是某种类型的?

a是类型变量。

这意味着类型 List 是多态的(泛型),即 a 可以替换为任何类型(IntString、...) .函数 length 也是多态的。例如,length [1, 2, 3] 将 return 3length ["word1", "word2"] 将 return 2

[1,2,3] 是一个 List Int,只能使用 Int 列表的函数必须在其类型签名中包含 List Int["a", "b"] 是一个 List String,只能使用字符串列表的函数必须在其类型签名中包含 List String。适用于任何类型列表(例如 List.length)的函数可以具有泛型类型签名(例如 List aList 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