有人可以解释为什么有27
不同的Bool->Bool
值,11
可以在 Haskell 中定义吗?
问问题
2136 次
1 回答
50
Bool
type 有:True
和bottom三个值False
(评估未完成的表达式或评估变成错误的表达式)。
然后,有从A
到的指数函数B
。更确切地说|B| ^ |A|
。
因此,有3^3 = 27
type 的函数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 回答