类型的基数是该类型可能的合法值数量。对于函数类型,我们通常希望考虑两个对于每个输入返回相同值的函数在基数上“相同”,至少在基数目的上是这样的(这被称为“外延相等”)。我假设这是一个作业问题,并进一步假设不终止或产生未定义值的函数不应包括在内(因为它们确实不会包括在典型的数学处理中)。原则上,表达可以有有限数量可能值的类型的基数相当容易,因为你可以给出一个数字作为基数。然而,对于无限基数,从技术上讲,不同类型的无穷大之间存在区别。例如,一个不可数的无限大是“大于”可数的无限大。(老实说,我不确定你是否需要知道这一点,或者你只需要给出“无限”的答案-检查你的课程笔记)。因此,最好指定你所说的是哪种无限大,例如通过引用“更简单”类型的基数来指定。因此,unit->int的基数与int的基数相同(你也可以选择任何其他目标类型),因为类型为unit->X的值必须是一个“忽略其输入”并返回类型为X的常量值的常量函数。我希望这个不完整的答案足以让你开始。
int->bool
,假设只有10个整数(哈哈),从整数到布尔值的函数数量肯定会超过20个:实际上是1024个。所以,当你有一个函数类型时,它不仅仅是两个基数相乘的问题。 - Robin Greenunit->X
的推理是我自己想出来的。 - Robin Green