Возник такой вопрос относительно замыканий в современных языках программирования.
В большинстве языков -- замыкания, как я понимаю, автоматически создаются.
Вот пример отсюда (http://en.wikipedia.org/wiki/Closure_%2
def counter():
x = 0
def increment():
nonlocal x
x += 1
print(x)
return increment
counter1_increment = counter()
counter2_increment = counter()
counter1_increment() # 1
counter1_increment() # 2
counter2_increment() # 1
counter1_increment() # 3
Пример, понятно, на Python.
Предположим, однако, что механизм описания для замыканий был бы не автоматическим, а каким-то более явным. Ну, вот как ниже:
def counter():
x = 0
bind counter (def increment():
nonlocal x
x += 1
print(x)
)
return increment
Это, конечно, уже не Питон, а некий псевдокод, но идею иллюстрирует. Суть в том, что для возвращаемой внутренней функции мы *явно* описываем сохраняемый контекст. Если надо сохранить контекст нескольких внешних функций -- применяем bind к ним всем.
Как-то так. Мне интересно, кто что думает про эту идею.
← Previous day | (Calendar) | Next day → |