问题的直接答案:是的,存在基于 mu-递归函数的神秘且高度不切实际的PL (请考虑空白),但是由于有效的原因,没有实用的编程语言基于 mu-递归函数。μμμ
通用递归(即 mu- 递归)函数的表达能力远不如lambda结石。因此,它们为编程语言奠定了较差的基础。您还不正确认为TM是命令式PL的基础:实际上,好的命令式编程语言比 -calculus 更接近于Turing机器。μλ
在可计算性方面, mu-递归函数,图灵机和未类型化的 -calculus都是等效的。但是,未分类的LC具有其他两个都没有的良好性能。它非常简单(仅3种语法形式和2条计算规则),高度组合,并且可以相对容易地表示编程结构。而且,配备了一个简单的类型系统(例如,用扩展的System), -calculus可以极具表现力,因为它可以轻松,正确和组成地表达许多复杂的编程构造。您还可以扩展λμλ˚F 我X λ λFωfixλλ-演算很容易包括不是lambda的构造。上面提到的其他计算模型都没有为您提供这些出色的属性。
图灵机既不是通用的,也不是通用的(每个问题都需要有一个TM)。没有“功能”,“变量”或“组成”的概念。TM是命令式PL的基础也不完全正确-FWIW,命令式PL与图灵机相比,具有控制操作员的λ结石要紧密得多。有关详细说明,请参见Peter J. Landin的“ ALGOL 60与教堂的Lambda表示法之间的对应关系”。如果您使用Brainf ** k编程(实际上实现了相当简单的Turing机器),您将知道Turing机器不是编程的好主意。
μ μ Ñμ mu-递归函数在这方面与TM相似。它们是组成成分,但不像LC那样组成成分。您也无法在 -recursive函数中对有用的编程结构进行编码。此外, -recursive函数仅在进行计算,并且在进行其他任何计算时,您都需要使用某种Gödel编号将数据编码为自然数,这很痛苦。μμN
因此,大多数编程语言都基于 -calculus并非巧合!该演算具有良好的性能:表现力,组合性和可扩展性,其他系统缺乏。但是,图灵机适合于研究计算复杂性,而递归函数则适合于研究可计算性的逻辑概念。它们都具有 -calculus所缺乏的突出特性,但是在编程领域中 -calculus显然是成功的。λμ λ λλμλλ
实际上,那里有很多很多的图灵完整系统,但是它们都没有任何出色的特性。Conway的“生命游戏”,LaTeX宏,甚至(有些人声称)DNA都是图灵完整的,但是没有人使用Conway编写程序(即进行认真的编程),也没有人研究使用LaTeX宏进行的计算复杂性。它们只是缺乏良好的性能。就编程而言,图灵本身本身几乎没有任何意义。
同样,许多非图灵完整的计算系统在编程时也非常有用。正则表达式和yacc并不是图灵完整的,但是它们在解决特定类别的问题方面非常强大。Coq也不是图灵完整的,但是它的功能非常强大(实际上,它比图灵完整的表亲OCaml 更具表现力)。在编程方面,图灵的完整性不是关键,因为许多(接近)无用的系统对图灵的完整性毫无意义。您不会声称Brainf ** k或Whitespace是比Coq更强大的编程语言,是吗?一个表现基础的关键在于强大的编程语言,这就是为什么现代的编程语言几乎总是基于λ-结石。