As funções recursivas primitivas são definidas sobre os números naturais. No entanto, parece que o conceito deve generalizar para outros tipos de dados, permitindo falar sobre funções recursivas primitivas que mapeiam listas para árvores binárias, por exemplo. Por analogia, funções recursivas parciais sobre os números naturais generalizam bem para funções computáveis em qualquer tipo de dados, e eu gostaria de entender como fazer o mesmo tipo de generalização para funções recursivas primitivas.
Intuitivamente, se eu definisse uma linguagem imperativa simples que permitisse operações básicas, digamos listas (como concatenação, aceitação e comparação, comparação de elementos) e uma forma de iteração que requer saber antecipadamente quantas iterações ocorrerão ( como iterar sobre os elementos em uma lista imutável), essa linguagem deve, no máximo, ser capaz de calcular as funções recursivas primitivas nas listas. Mas como posso entender isso formalmente, e mais especificamente, como eu provaria que minha linguagem calcula todas as funções recursivas primitivas em listas e não apenas um subconjunto delas?
Para ser claro, estou interessado em entender as funções recursivas primitivas como uma classe bem definida de funções (se é que elas são), em vez de apenas na operação da recursão primitiva em si, o que parece direto. Eu estaria interessado em apontadores para qualquer coisa que tenha sido escrita sobre recursão primitiva sobre estruturas de dados gerais, ou mesmo em qualquer contexto que não seja o número natural.
atualização: Talvez eu tenha encontrado uma resposta, em um artigo chamado Walther Recursion , de McAllester e Arkoudas. (Procedimentos do CADE 1996. ) Isso parece conter uma versão generalizada da recursão primitiva, bem como a recursão mais poderosa de Walther. Pretendo escrever uma resposta automática depois de digeri isso, mas, enquanto isso, essa nota pode ser útil para outras pessoas com a mesma pergunta.