由于这(至少在我看来)与编程密切相关,所以我在这里问而不是在math https://math.stackexchange.com/ or cs https://cs.stackexchange.com/,但如果您认为它最适合那里或另一边,请发表您的意见。
巴托什·米勒夫斯基 (Bartosz Milewski) 的第二章结尾处程序员的范畴论,有这样一个问题:
有多少种不同的功能Bool
to Bool
?你能全部实现吗?
这是我的推理:
-
Bool
其中只有两个元素,True
and False
;
-
不同的指的是如果被视为黑盒,函数会做什么,无论它们内部发生什么(例如,两个函数编码两个
Int
s as arg1 + arg2
and arg2 + arg1
分别是相同的函数Int
to Int
);
- so the different functions are those going from one of the two
Bool
s to another of the two Bool
s:
-
T
to T
-
T
to F
-
F
to T
-
F
to F
- 我需要什么功能才能使这些进出场景成为可能?好吧,我想我只需要两个,例如恒等函数,它允许 1 和 4,以及否定函数,它允许 2 和 3。
我的推理正确吗?
不同的功能来自两个之一Bool
s 到两个中的另一个Bool
s
不,函数确实可以映射every其价值来自于domain https://en.wikipedia.org/wiki/Domain_of_a_function为其密码域中的一个值。您需要考虑所有可能的映射组合。为此,将该函数视为relation https://en.wikipedia.org/wiki/Binary_relation,并将它们全部列出:
-
f -> f
, t -> f
-
f -> f
, t -> t
-
f -> t
, t -> f
-
f -> t
, t -> t
这些分别对应4个功能
-
x => f
(常为假)
-
x => x
(身份)
-
x => not(x)
(否定)
-
x => t
(恒为真)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)