【发布时间】:2020-12-30 22:53:13
【问题描述】:
因为这(至少在我看来)与编程密切相关,所以我在这里而不是在 math 或 cs 上提问,但如果您认为它最适合那里或另一边,请只是发表你的意见。
在 Bartosz Milewski 的 Category Theory for Programmers 第 2 章末尾,有一个问题:
从
Bool到Bool有多少种不同的功能?你能全部实现吗?
这是我的推理:
-
Bool里面只有两个元素,True和False; -
不同是指如果考虑黑盒,函数会做什么,而不管它们内部发生了什么(例如,两个函数将两个
Ints 的总和分别编码为arg1 + arg2和arg2 + arg1,将从Int到Int的功能相同); - 所以不同的功能是从两个
Bools 之一到两个Bools 中的另一个:-
T到T -
T到F -
F到T -
F到F
-
- 我需要哪些功能才能使这些进出方案成为可能?好吧,我想我只需要两个,例如允许 1 和 4 的恒等函数,以及允许 2 和 3 的否定。
我的推理正确吗?
【问题讨论】:
-
您仍然可以使用两个不同于身份和否定的函数,但仍然可以涵盖所有内容。一个函数只返回
T,覆盖1. + 3。另一个只返回F,覆盖2. + 4。 -
我确实也想过这个,但根据我得到的答案,这似乎也是一个错误的结论。
-
1.返回假。 2. 返回真。 3. 返回输入。 4.返回输入否定。
标签: functional-programming boolean-logic category-theory