Pierwotne funkcje rekurencyjne są zdefiniowane ponad liczbami naturalnymi. Wydaje się jednak, że koncepcja powinna uogólnić na inne typy danych, pozwalając mówić o prymitywnych funkcjach rekurencyjnych, które mapują listy na przykład na drzewa binarne. Przez analogię częściowe funkcje rekurencyjne nad liczbami naturalnymi ładnie uogólniają się na funkcje obliczeniowe na dowolnym typie danych i chciałbym zrozumieć, jak zrobić ten sam rodzaj uogólnienia dla pierwotnych funkcji rekurencyjnych.
Intuicyjnie, gdybym miał zdefiniować prosty imperatywny język, który pozwalałby na podstawowe operacje, powiedzmy listy (takie jak konkatenacja, wzięcie głowy i ogona, porównanie elementów) oraz formę iteracji, która wymaga wcześniejszej wiedzy o liczbie iteracji ( takich jak iteracja elementów na niezmiennej liście), wówczas taki język powinien co najwyżej być w stanie obliczyć pierwotne funkcje rekurencyjne na listach. Ale w jaki sposób mogę to zrozumieć formalnie, a dokładniej, jak miałbym udowadniać, że mój język oblicza wszystkie prymitywne funkcje rekurencyjne na listach, a nie tylko ich podzbiór?
Dla jasności interesuje mnie raczej rozumienie pierwotnych funkcji rekurencyjnych jako dobrze zdefiniowanej klasy funkcji (jeśli rzeczywiście są), a nie tylko działanie samej pierwotnej funkcji rekurencyjnej, co wydaje się proste. Byłbym zainteresowany wskazówkami do wszystkiego, co napisano o prymitywnej rekurencji w stosunku do ogólnych struktur danych, a nawet w jakimkolwiek kontekście innym niż liczby naturalne.
aktualizacja: Być może znalazłem odpowiedź w artykule zatytułowanym Walther Recursion autorstwa McAllestera i Arkoudasa. (Postępowanie z CADE 1996. ) Wydaje się, że zawiera uogólnioną wersję prymitywnej rekurencji, a także silniejszą rekurencję Walthera. Zamierzam napisać odpowiedź na pytanie, kiedy to przeczytam, ale w międzyczasie ta notka może być pomocna dla innych z tym samym pytaniem.