有人可以解释为什么有27不同的Bool->Bool值,11可以在 Haskell 中定义吗?
2136 次
1 回答
50
Booltype 有:True和bottom三个值False(评估未完成的表达式或评估变成错误的表达式)。
然后,有从A到的指数函数B。更确切地说|B| ^ |A|。
因此,有3^3 = 27type 的函数Bool -> Bool。
现在,对于问题的第二部分:从底部开始的函数只能是 2:一个不断返回True,一个不断返回False。然后你必须添加函数的数量 from {True, False}to {True, False, bottom}which is 3^2。因此,总的来说,您将拥有9+2=11功能。
编辑:这里有 11 个可能的功能:

B是底部,T是True,F是False。最后一行代表const True和const False函数,而前三行代表测试参数值的函数。这就是为什么前三行映射B到B:测试底部的值除了底部之外不能产生任何其他结果。
我希望现在更清楚了。
于 2013-09-10T10:58:17.207 回答