为什么有| b | ^ | a |函数a-> b中的居民 我认为它应该是“ a”类居民,因为a是任何类型。无法理解为什么不是这样。
答案 0 :(得分:6)
让我们谈一个具体的例子,即下面两种特定类型的函数:
data Three = A | B | C
data Four = OneFish | TwoFish | RedFish | BlueFish
可以通过为每个输入Three -> Four
,Four
和{选择四个A
类型的可能值之一来完全指定B
类型的函数{1}};这是一个例子:
C
这是另一个例子;就像f A = TwoFish
f B = BlueFish
f C = OneFish
一样,只是它为f
做出了不同的选择:
C
由于g A = TwoFish
g B = BlueFish
g C = BlueFish
的输出有四种选择,A
的输出有四种选择,B
的输出有四种选择,因此有4 * 4 * 4 = 64种可能功能选择。
现在,我们可以概括一下,并讨论其他有限输入类型上的总函数。和以前一样,可以通过告诉它为每个输入C
选择哪个a
来完全指定从b
到b
的函数。在以前每个输入有4个可能的输出的地方,现在每个选择都有a
个可能性。和以前一样,由于选择是完全独立的,因此对于每个可能的输入,我们必须将|b|
自身乘以一次-即|b|
-很多次。也就是说,我们有|a|
个可能的完整规格。