Le funzioni ricorsive primitive sono definite sui numeri naturali. Tuttavia, sembra che il concetto debba generalizzare ad altri tipi di dati, consentendo di parlare di funzioni ricorsive primitive che mappano elenchi su alberi binari, per esempio. Per analogia, le funzioni ricorsive parziali rispetto ai numeri naturali si generalizzano piacevolmente a funzioni calcolabili su qualsiasi tipo di dati, e mi piacerebbe capire come fare lo stesso tipo di generalizzazione per le funzioni ricorsive primitive.
Intuitivamente, se dovessi definire un semplice linguaggio imperativo che permettesse operazioni di base su, dire elenchi (come la concatenazione, la testa e la coda, il confronto di elementi) e una forma di iterazione che richiede di sapere in anticipo quante iterazioni si verificheranno ( come iterare gli elementi in un elenco immutabile), quindi un tale linguaggio dovrebbe al massimo essere in grado di calcolare le primitive funzioni ricorsive sugli elenchi. Ma come posso comprenderlo formalmente e, più specificamente, come potrei provare a dimostrare che il mio linguaggio calcola tutte le funzioni ricorsive primitive su elenchi e non solo su un sottoinsieme di essi?
Per essere chiari, sono interessato a comprendere le funzioni ricorsive primitive come una classe ben definita di funzioni (se davvero lo sono), piuttosto che semplicemente nel funzionamento della ricorsione primitiva stessa, che sembra semplice. Sarei interessato ai puntatori a tutto ciò che è stato scritto sulla ricorsione primitiva su strutture di dati generali, o addirittura in qualsiasi contesto diverso dai numeri naturali.
aggiornamento: potrei aver trovato una risposta, in un documento chiamato Walther Recursion , di McAllester e Arkoudas. (Atti del CADE 1996 ). Questo sembra contenere una versione generalizzata della ricorsione primitiva e la più potente ricorsione di Walther. Ho intenzione di scrivere un'auto-risposta una volta digerito questo, ma nel frattempo questa nota potrebbe essere utile per gli altri con la stessa domanda.