> Не соглашусь. Использование переменных внутри тела замыкания неявно привязывает его к контексту.эм... это и есть суть замыканий: захватить с собой контекст.
> А с именованными параметрами мы получаем вполне себе переносимый код, одновременно
> корректно работающий с контекстом и не зависящий от него.
это, пардон май фрэнч, фигня какая-то. странная помесь недозамыканий и dynamic scoping.
> Правда, думаю,
> это вопрос вкуса - ведь можно в принципе и новое замыкание
> объявить.
и можно, и нужно. не надо превращать замыкания в непонятных монстров.
> Насчёт nested functions и bindTo - не уловил идеи. Можете подробнее?
если я верно понял, что делает bindTo, то оно пишется вот так:
function makeBind (obj)
function closure ()
print(obj.field);
end;
return closure;
end;obj0 = { field=42 };
cls0 = makeBind(obj0);
cls1 = makeBind{ field=666 };
cls0(); -- prints 42
cls1(); -- prints 666