Haskell 对“a-”类型的限制;b`函数
假设我有函数签名的一部分:Haskell 对“a-”类型的限制;b`函数,haskell,Haskell,假设我有函数签名的一部分: f::(a->b)->…… 对a和b的类型是否有任何限制(例如它们的种类) a不能是函数,即(c->d),可以吗?a和b必须具有种类*,即它们不能是需要参数的类型构造函数。因此它们可以是整数,(c->d)或可能是字符串,但不能是(>),(a->)或可能 a不能是函数,即(c->d),可以吗 是的,它可以。它可以是任何类型的*啊,所以当使用类型这个词时,就意味着有一种类型的*?@KevinMeredith在技术上可能不正确。我更改了措辞以使其更加清晰。有关这类解释的信息
f::(a->b)->……
对a
和b
的类型是否有任何限制(例如它们的种类
)
a
不能是函数,即(c->d)
,可以吗?a
和b
必须具有种类*
,即它们不能是需要参数的类型构造函数。因此它们可以是整数
,(c->d)
或可能是字符串
,但不能是(>)
,(a->)或可能
a
不能是函数,即(c->d)
,可以吗
是的,它可以。它可以是任何类型的*
啊,所以当使用类型
这个词时,就意味着有一种类型的*
?@KevinMeredith在技术上可能不正确。我更改了措辞以使其更加清晰。有关这类解释的信息,请参阅或。(当前的文档似乎已经放弃了最初的讨论。)我不经意地认为,*
是具有值的类型(当然包括函数值),但这可能不太正确。“我不经意地认为*是具有值的类型(当然包括函数值),但这可能不太正确。”。也许更正确的说法是*是“包含运行时值的类型”,因为还有其他类型包含类型级值(例如,在GHC-XDataTypes下,类型级文字0、1、2具有种类Nat)。除了这个细微差别,我认为你的直觉是正确的。我无法找到一个关于这个话题的现有问题,所以我提出了一个: