gpt4 book ai didi

haskell - Haskell 类型签名中的 "a"类型和 "t"类型有什么区别?

转载 作者:行者123 更新时间:2023-12-04 19:29:22 26 4
gpt4 key购买 nike

Haskell 类型签名中的“a”和“t”这两种类型有什么区别,还是只有“a”类型和“b”类型这样的不同名称?

https://www.haskell.org/tutorial/goodies.html [a] 类型定义如下:

[a] is the family of types consisting of, for every type a, the type of lists of a. Lists of integers (e.g. [1,2,3]), lists of characters (['a','b','c']), even lists of lists of integers, etc., are all members of this family. (Note, however, that [2,'b'] is not a valid example, since there is no single type that contains both 2 and 'b'.)



这个定义是否也适用于“t”类型?

一个例子可能是:
foldl :: Foldable t => (b -> a -> b) -> b -> t a -> b
app :: [t] -> t -> [t]

最佳答案

在 Haskell 类型定义中,类型名称总是以大写字母开头,而类型变量总是以小写字母开头。这些通常称为 a , b , 等等,但也可以称为 f , m , t , 等等。

通常,字母表开头的字母用于无界类型变量,而您经常看到更具体的类型变量用 f 表示。 , m , t , 等等。

在特定示例中

foldl :: Foldable t => (b -> a -> b) -> b -> t a -> b
t被特别表示为 Foldable 的一个实例类型类。 t a表示任何 Foldable保存类型为 a 的值的“容器” .

当您查看其他示例时
app :: [t] -> t -> [t]

还不如说 [a] -> a -> [a] , 如果 app是一个“独立”功能。另一方面,如果 app属于一个类型类,该类型类定义可以包含更具体的 t 定义.

关于haskell - Haskell 类型签名中的 "a"类型和 "t"类型有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46221316/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com