我想举一个纯λ演算中的奎因的例子。我无法通过谷歌搜索找到一个,我感到非常惊讶。quine页面列出了许多“真实”语言的quines,但没有列出lambda演算。
当然,这意味着要在lambda演算中定义我的意思,这是我下面要做的。(我要的是非常具体的内容。)
在一些地方,例如Larkin和Stocks(2004),我看到以下内容被引用为“自我复制”表达式:。经过一个单独的beta降低步骤,它本身就减少了,从而给人一种类似于藜的感觉。但是,它像unquine一样,不会终止:进一步的β减少将继续产生相同的表达,因此它永远不会减少为正常形式。对我来说,quine是一个终止并输出自身的程序,所以我想要具有该属性的lambda表达式。
当然,任何不包含redexe的表达式都已经是正常形式,因此将终止并输出自身。但这太琐碎了。因此,我提出以下定义,希望它可以接受非平凡的解决方案:
定义(暂定):lambda演算中的喹是形式 x。A)的表达式 (其中表示某些特定的lambda演算表达式),使得变为或对变量更改后的等效值,当对任何输入简化为标准形式时。
鉴于lambda演算与其他任何语言都具有图灵等效性,看来这应该是可行的,但是我的lambda演算是生锈的,因此我想不出一个例子。
参考
詹姆斯·拉金(James Larkin)和菲尔·斯托克斯(Phil Stocks)。(2004)“在Lambda微积分中的自我复制表达式”,信息技术研究与实践会议,26(1),167-173。 http://epublications.bond.edu.au/infotech_pubs/158