プリミティブな再帰関数は自然数に対して定義されます。ただし、この概念は他のデータ型に一般化する必要があるようで、たとえば、リストをバイナリツリーにマップするプリミティブな再帰関数について説明できます。同様に、自然数に対する部分的な再帰関数は、あらゆるデータ型の計算可能な関数にうまく一般化します。また、プリミティブな再帰関数に対して同じ種類の一般化を行う方法を理解したいと思います。
直感的に、たとえばリスト(連結、先頭と末尾の取得、要素の比較など)に対する基本的な操作を許可する単純な命令型言語と、発生する反復の数を事前に知る必要がある反復の形式を定義する場合(不変のリストの要素を反復するなど)、そのような言語では、リストに対してプリミティブな再帰関数を計算できるはずです。しかし、これを正式に理解するにはどうすればよいのでしょうか。具体的には、私の言語がリストのすべてのプリミティブな再帰関数を計算することを証明するにはどうすればよいでしょうか。
明確にするために、私は単純なように見えるプリミティブ再帰自体の操作ではなく、プリミティブ再帰関数を明確に定義された関数のクラス(実際にはそうである場合)として理解することに興味があります。一般的なデータ構造に対するプリミティブな再帰、または自然数以外のコンテキストで書かれたものへのポインターに興味があります。
更新: McAllesterとArkoudasによるWalther Recursionと呼ばれる論文で答えを見つけたかもしれません。(CADE 1996の議事録。)これには、プリミティブ再帰の一般化されたバージョンと、より強力なWalther再帰が含まれているようです。私はこれを消化したら自己回答を書くつもりですが、その間、このメモは同じ質問を持つ他の人に役立つかもしれません。