Что такое открытая рекурсия? - PullRequest
28 голосов
/ 22 мая 2011

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

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

Ответы [ 2 ]

19 голосов
/ 22 мая 2011

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

2 голосов
/ 01 сентября 2014

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

3.3.Объекты

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...