原始递归函数是在自然数上定义的。但是,似乎该概念应该推广到其他数据类型,例如,允许人们谈论将列表映射到二叉树的原始递归函数。通过类推,自然数上的部分递归函数可以很好地概括为任何数据类型上的可计算函数,并且我想了解如何对原始递归函数进行相同类型的概括。
直观地讲,如果我要定义一种简单的命令式语言,该命令式语言允许对诸如列表(例如,串联,进行头和尾,元素的比较)之类的基本操作以及一种迭代形式,该形式需要事先知道将发生多少次迭代( (例如,对不可变列表中的元素进行迭代),那么这种语言最多应该能够计算出列表中的原始递归函数。但是我如何才能正式地理解这一点,更具体地说,我将如何证明我的语言能够计算出列表中的所有原始递归函数,而不仅仅是它们的子集?
明确地说,我有兴趣将原始递归函数理解为定义良好的函数类(如果确实存在),而不仅仅是原始递归本身的操作,这似乎很简单。我会对在通用数据结构的原始递归上或者在自然数以外的任何上下文中编写的任何东西的指针都感兴趣。
更新:我可能已经在McAllester和Arkoudas的名为Walther Recursion的论文中找到了答案。(CADE 1996的会议记录。)这似乎包含原始递归以及更强大的Walther递归的广义版本。消化完这些内容后,我打算写一个自我解答,但与此同时,本说明可能对有相同问题的其他人有所帮助。