模板元编程:原始递归

Template Metaprogramming: Primitive Recursive?

本文关键字:原始 递归 编程      更新时间:2023-10-16

作者在本文中断言:

…该程序确实表明,模板实例化机制是一种基本的递归语言,可以在编译时执行重要的计算。

我发现这很有趣,因为我帮助教授一门关于计算理论的课,这门课深入研究了原始递归函数的理论。然而,在我的印象中,模板元编程是图灵完备的,这比说它是原始递归要严格得多……毕竟,创建一个不能停止的模板元程序并不是很困难。

我错过了什么吗?模板元编程是一种严格的原始递归语言,还是我认为它涵盖了更广泛的程序?

我相信你只是对文本读得太多了,"primitive"并不是指"primitive递归",而是一种"递归语言"(这听起来很奇怪,我把它描述为一种函数语言,但没关系),这是原始的。

如果你把TMP看作一个函数式语言,它并不是一个非常复杂的语言;因此,它是一个原始的。

但是你是对的,TMP确实是图灵完备的。

我怀疑很多人听说过原始递归语言,所以这只是一个不幸的词选择。

Unruh的程序只演示了原始递归,即循环(当这种情况发生时,我实际上在场!)。然而,它立即被认为是支持完全递归的(因为它的实现确实没有做尾部搜索优化)。