Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell 对“a-”类型的限制;b`函数_Haskell - Fatal编程技术网

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)。除了这个细微差别,我认为你的直觉是正确的。我无法找到一个关于这个话题的现有问题,所以我提出了一个: