Плод, если вы не слышали об этом, можно прочитать здесь . Он использует систему «матриц вызовов» и «графов вызовов» для поиска всех «поведений рекурсии» рекурсивных вызовов в функции. Чтобы показать, что функция завершается, это показывает, что все рекурсивные поведения рекурсивных вызовов, выполняемых к функции, подчиняются определенному «лексикографическому порядку». Это проверка завершения позволяет все примитивные рекурсивные функции и функции, такие как функция Аккермана. В основном это допускает примитивную рекурсию с несколькими аргументами. Это также в основном проверка завершения Агды; Я полагаю, что у Coq также есть некоторые подобные возможности, хотя, возможно, более общие.
Из чтения статьи «Общее функциональное программирование» Д. А. Тернера . Он объясняет, что предложенный им язык сможет выразить все «примитивно-рекурсивные функционалы», как это видно в Системе Т, изученной Годелем. Далее он говорит, что эта система «как известно, включает в себя каждую рекурсивную функцию, совокупность которой можно доказать в логике первого порядка».
Доза Плода разрешает все примитивно-рекурсивные функционалы? Если да, то разрешены ли функции, которые не являются примитивными рекурсивными функционалами? Можно ли привести цитату для ответа на этот вопрос? (это на самом деле не нужно, так как мне просто интересно; просто было бы неплохо немного пообщаться)
Дополнительный вопрос: примитивные рекурсивные функционалы имеют очень краткое определение в терминах комбинаторов: типизированные S и K (которые не могут выразить комбинаторы с фиксированной точкой), ноль, функция-преемник и функция итерации; это оно. Существуют ли другие, более общие, такие языки, которые имеют такое краткое определение и в котором заканчиваются все выражения?