关于本科水平计算机科学的主题。
在复习该理论时,我遇到了一个令人烦恼的问题,即关于(0 m)
lambda 演算中教堂数字的取幂。
据我所知,(0 m)
当减少结果时λx. x
,这不是1 (= m^0)
预期的,甚至不在教堂的数字内。
我在由教堂编码编码的 lambda 演算中采用自然数的 n,通常如下所示
n := λfx. (f^n x) = (f ... (f x))
很多文献都这么说
EXP(m, n) := λmn. (n m)
返回m^n
给定m
和n
教堂的数字,我知道该功能在大多数情况下都能正确响应。但情况并非如此,n = 0
因为
(0 m) = ((λfx. x) m) → λx. x
在数学中,1
是自然数的单位元,被视为一个乘法群,即对于中x * 1 = 1 * x
的任何一个。因此,如果我以以下形式设置功能x
N
EXP
EXP’(m, n) := λmn. (n (MUL m) 1)
因为MUL(m, n) = m * n
,这似乎工作正常,与数学m^0
中经常定义的事实相吻合。1
在超操作的意义上,这似乎也很简单。
超操作: https ://en.m.wikipedia.org/wiki/Hyperoperation
我预计会有一些批评,比如m^0
不一定1
是数学,而死板的数学家会说这一切都取决于定义。但是,采用前一种风格是否有任何合乎逻辑的支持EXP(m, n)
?当 时它不会返回教堂的数字n = 0
,所以对我来说似乎仍然定义不明确。
问题是
“为什么定义
EXP(m, n) := λmn. (n m)
通常被接受,m^n
即使它的输出可以是非教堂的数字,用于教堂的数字输入?”</p>“你知道任何轻微的修正,
EXP
因此该功能适用于所有教堂的数字输入吗?”</p>“对我的批评有任何问题或误解
(0 m)
。”</p>
另外,作为函数组合的单位元的(0 m)
to be的结果是否有逻辑背景λx. x
,而不是 1?这只是巧合还是我想得太认真了?
欢迎任何想法。
如有必要,我想遵循与教堂数字相关的代数的维基百科定义。
教会的编码:https ://en.m.wikipedia.org/wiki/Church_encoding
谢谢。