从Bool到Bool有多少种不同的功能?

恩里科

由于这(至少在我看来)与编程紧密相关,所以我在这里而不是在数学CS上询问,但是如果您认为它最适合那里或另一方面,请提出您的意见。

在Bartosz Milewski的《程序员分类理论》的第二章结尾处,有一个问题:

Bool有多少种不同的功能Bool你能全部实现吗?

这是我的理由:

  • Bool其中只有两个元素,True并且False;
  • 不同是指如果将其视为黑盒,无论它们内部发生了什么(例如,两个函数分别将Intasarg1 + arg2和和编码为2arg2 + arg1函数将是fromInt到to的相同函数Int,它们将如何处理
  • 因此,不同的功能是从两个Bools中的一个到两个s中的另一个Bool的功能:
    1. TT
    2. TF
    3. FT
    4. FF
  • 我需要什么功能才能使这些进出场景成为可能?好吧,我想我只需要两个,例如恒等函数(允许1和4)和取反(允许2和3)。

我的推理正确吗?

贝吉

不同的功能是从两个中Bool一个到两个中的另一个Bool的功能

不。一个函数确实将域中的每个映射到其共域中的一个值。您需要考虑所有可能的映射组合。为此,将函数视为一个关系并列出所有它们可能是有意义的

  • f -> ft -> f
  • f -> ft -> t
  • f -> tt -> f
  • f -> tt -> t

这些对应于4个功能

  • x => f (持续错误)
  • x => x (身份)
  • x => not(x) (否定)
  • x => t (恒定)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章