Плід, якщо ви про нього не чули, можна прочитати тут . Він використовує систему "матриць викликів" та "графіків викликів", щоб знайти всю "поведінку рекурсії" рекурсивних викликів у функції. Щоб показати, що функція припиняється, це показує, що всі поведінки рекурсії рекурсивних викликів, зроблених до функції, підкоряються певному "лексикографічному впорядкуванню". Його перевірка припинення дозволяє виконувати всі примітивні рекурсивні функції та такі функції, як функція Ackermann. В основному це дозволяє багато аргументацію примітивної рекурсії. Це, в основному, перевірка припинення Agda; Я вважаю, що у Coq є також подібні засоби, хоча, можливо, більш загальні.
З прочитання статті "Загальне функціональне програмування" Д. А. Тернера . Він пояснює, що запропонована мова могла б виразити всі "примітивні рекурсивні функціонали", як це спостерігається в Системі T, вивченій Годелем. Він продовжує говорити, що ця система "відома, що включає кожну рекурсивну функцію, сукупність якої може бути доведена логікою першого порядку".
Доза плоду дозволяє всім примітивним рекурсивним функціоналом? Якщо так, чи дозволяють функції, які не є примітивними рекурсивними функціоналами? Чи можна надати відповідь на це відповідь? (це насправді не потрібно, тому що я просто зацікавлений; це просто, що деякі подружні читання з цього питання були б непогані)
Питання про бонус: Примітивні рекурсивні функціонали мають дуже стисле визначення щодо комбінаторів: введені S і K (які не можуть виразити комбінатори з фіксованою точкою), нуль, функція наступника та ітераційна функція; Це воно. Чи існують інші більш загальні такі мови, які мають таке стисле визначення і в яких усі вирази закінчуються?