有人可以解释为什么有27
个不同的Bool->Bool
值,可以在Haskell中定义11
吗?
答案 0 :(得分:50)
类型Bool
有三个值:True
,False
和底部(评估未完成的表达式或评估变为错误的表达式)。< / p>
然后,从A
到B
有一些指数函数。更确切地说是|B| ^ |A|
。
因此,3^3 = 27
类型的Bool -> Bool
函数。
现在,对于问题的第二部分:从底部开始的函数只能是2:一个不断返回的True
和一个不断返回False
的函数。然后,您必须添加{True, False}
到{True, False, bottom}
3^2
的函数数量。9+2=11
。所以,总的来说,你将拥有B
个功能。
编辑:以下是11种可能的功能:
T
位于底部,True
为F
,False
为const True
。最后一行表示const False
和B
函数,而前三行表示测试参数值的函数。这就是前三行将B
映射到{{1}}的原因:测试底部的值不会导致除底部之外的任何其他内容。
我希望现在更清楚了。