26

有人可以解释为什么有27不同的Bool->Bool值,11可以在 Haskell 中定义吗?

4

1 回答 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 个可能的功能:

11个功能

B是底部,TTrueFFalse。最后一行代表const Trueconst False函数,而前三行代表测试参数值的函数。这就是为什么前三行映射BB:测试底部的值除了底部之外不能产生任何其他结果。

我希望现在更清楚了。

于 2013-09-10T10:58:17.207 回答