模板元编程:原始递归
Template Metaprogramming: Primitive Recursive?
作者在本文中断言:
…该程序确实表明,模板实例化机制是一种基本的递归语言,可以在编译时执行重要的计算。
我发现这很有趣,因为我帮助教授一门关于计算理论的课,这门课深入研究了原始递归函数的理论。然而,在我的印象中,模板元编程是图灵完备的,这比说它是原始递归要严格得多……毕竟,创建一个不能停止的模板元程序并不是很困难。
我错过了什么吗?模板元编程是一种严格的原始递归语言,还是我认为它涵盖了更广泛的程序?
我相信你只是对文本读得太多了,"primitive"并不是指"primitive递归",而是一种"递归语言"(这听起来很奇怪,我把它描述为一种函数语言,但没关系),这是原始的。
如果你把TMP看作一个函数式语言,它并不是一个非常复杂的语言;因此,它是一个原始的。
但是你是对的,TMP确实是图灵完备的。
我怀疑很多人听说过原始递归语言,所以这只是一个不幸的词选择。
Unruh的程序只演示了原始递归,即循环(当这种情况发生时,我实际上在场!)。然而,它立即被认为是支持完全递归的(因为它的实现确实没有做尾部搜索优化)。
相关文章:
- 通过递归进行因子分解
- 递归函数计算序列中的平方和(并输出过程)
- 使用递归的数组的最小值.这是怎么回事
- 递归列出所有目录中的C++与Python与Ruby的性能
- 递归计数给定目录的文件和所有目录
- 如何在BST的这个简单递归实现中消除警告
- C++:正在检查LinkedList中的回文-递归方法-错误
- 递归模板化函数不能分配给具有常量限定类型"const tt &"的变量"state"
- 递归无序映射
- TSP递归解的迭代形式
- 如何在Elixir中调用递归函数并行
- 返回递归调用和仅递归调用的区别
- 数组元素打印的递归方法
- 使用递归时获取变量的奇怪值
- 如何在C++中递归地按相反顺序打印集合
- 在C++中打破递归和原始函数
- 将多个非原始递归调用转换为迭代解决方案
- 调用原始版本的DLL挂钩函数时,我得到了无限递归
- 在C++中实现原始递归组合器
- 模板元编程:原始递归