Что такое открытая рекурсия? - программирование

Что такое открытая рекурсия?

Что такое открытая рекурсия? Это специфично для ООП?

(я натолкнулся на этот термин в этот твит Daniel Spiewak.)

4b9b3361

Ответ 1

просто копирование http://www.comlab.ox.ac.uk/people/ralf.hinze/talks/Open.pdf: "Открытая рекурсия. Еще одна удобная функция, предлагаемая большинством языков с объектами и классами, - это способность одного тела метода вызывать другой метод того же объекта через специальную переменную, называемую" я ", или, в некоторых языках, это. Особое поведение" я "заключается в том, что это поздняя граница, позволяющая методу, определенному в одном классе, вызывать другой метод, который определен позже, в каком-то подклассе первого."

Ответ 2

В этом документе анализируется возможность добавления OO к ML в отношении выразительности и сложности. Он имеет следующую выдержку на объекты, которая, похоже, делает этот термин относительно ясным -

3.3. Объекты

Простейшая форма объекта - это просто запись функций, которые имеют общую среду закрытия, которая переносит состояние объекта (мы можем назвать эти простые объекты). Члены функции записи могут или не могут определяется как взаимно рекурсивный. Однако, если кто-то хочет поддерживать наследование с переопределением, структура объектов становится более сложным. Чтобы включить открытую рекурсию, график вызовов функций метода не может быть жестко подключен, но должен быть реализован косвенно, посредством самореференции объекта. Самооценка объекта может быть достигнуто либо по конструкции, что делает каждый объект рекурсивным, самореферентным значением (фиксированная точка модель) или динамически, передавая объект в качестве дополнительного аргумента при каждом вызове метода (само приложение или самопроходимая модель).5 В любом случае мы будем называть эти самореферентные объекты.