Это такая функция, которая имеет внутри своего тела явные ссылки на более внешний скоуп. Правда традиционно принято считать замыканиями только функции объявленные не в топлевеле, соответственно ссылающиеся на переменные объявленные не в топлевеле и таким образом требующие создания объекта в динамической памяти.
электрическое соединение двух точек электрической цепи с различными значениями потенциала, не предусмотренное конструкцией устройства и нарушающее его нормальную работу
@anonymous и приунываешь со всей силы
@4077 Башлачёв умер за наши грехи!
@4077 это комар, имитация цепи маркова. разве может комар использовать замыкания? написать лямбдочку?
замыкание это монада.
@komar функция A содержит внутри себя функцию B и переменную a.
Функция B ссылается на переменную a.
В научных кругах говорят что /функция B замыкается на переменную a/.
@4077 > nonlocal, global, decorator
ебать костыли, сделайте меня это развидеть
электрическое соединение двух точек электрической цепи с различными значениями потенциала, не предусмотренное конструкцией устройства и нарушающее его нормальную работу
@4077 а по дефолту оно длинное чтоли?
@anonymous >длинное
@4077 рикамендую посмотреть как современные (маня)язычки обходятся без ентаких синтаксических костыликов
http://pasterack.org/pastes/57573
```
lang racket
(require syntax/parse/define)
(require (for-syntax syntax/parse))
(define-syntax (define-wd stx)
(syntax-parse stx
[(_ dec:id (fn:id args:id ...) body:expr ...+)
#'(begin
(define dec-evd (dec))
(define (fn args ...)
(dec-evd (lambda (args ...) body ...) args ...))
(void))]))
(define (counter)
(define cnt 0)
(define (decorator fn . args)
(set! cnt (add1 cnt))
(printf "counter: ~a\n" cnt)
(apply fn args))
decorator)
(define-wd counter (sum3 x y z)
(+ x y z))
(sum3 1 2 3)
(sum3 4 5 7)
```
@4077 ты на смысл смотри, а не на скобочки