Las funciones recursivas primitivas se definen sobre los números naturales. Sin embargo, parece que el concepto debería generalizarse a otros tipos de datos, permitiéndole hablar sobre funciones recursivas primitivas que mapean listas a árboles binarios, por ejemplo. Por analogía, las funciones recursivas parciales sobre los números naturales se generalizan muy bien a las funciones computables en cualquier tipo de datos, y me gustaría entender cómo hacer el mismo tipo de generalización para las funciones recursivas primitivas.
Intuitivamente, si tuviera que definir un lenguaje imperativo simple que permitiera operaciones básicas en, digamos listas (como concatenación, toma de cabeza y cola, comparación de elementos) y una forma de iteración que requiere saber de antemano cuántas iteraciones ocurrirán ( como iterar sobre los elementos en una lista inmutable), entonces dicho lenguaje debería ser capaz de calcular las funciones recursivas primitivas sobre listas. Pero, ¿cómo puedo entender esto formalmente y, más específicamente, cómo probaría que mi lenguaje computa todas las funciones recursivas primitivas sobre listas y no solo un subconjunto de ellas?
Para ser claros, estoy interesado en entender las funciones recursivas primitivas como una clase bien definida de funciones (si es que lo son), en lugar de solo en la operación de la recursividad primitiva en sí, lo que parece sencillo. Me interesarían los punteros a todo lo que se haya escrito sobre recursividad primitiva sobre estructuras de datos generales, o incluso en cualquier contexto que no sean los números naturales.
Actualización: es posible que haya encontrado una respuesta, en un artículo llamado Walther Recursion , por McAllester y Arkoudas. (Actas de CADE 1996 ). Esto parece contener una versión generalizada de la recursividad primitiva, así como la recursión de Walther más poderosa. Tengo la intención de escribir una respuesta propia una vez que haya digerido esto, pero mientras tanto, esta nota podría ser útil para otros con la misma pregunta.