> а почему эта closure в emacs'е не работает?
Потому что elisp - язык с dynamic binding. Программа:
(let ((a 1))
(let ((f (lambda () (print a))))
(let ((a 2))
(funcall f))))
выдаст 2.
>void func() {
> static bool is_on=false;
> if(is_on==true)
> {func_on();is_on=true;}
> else
> {func_off();is_on=false;} }
lg, я думаю, что аффтар ;) имел в виду такой кодЖ
void func()
{
static bool is_on = false;
if(is_on==false) {func_on(); is_on = true;}
else {func_off(); is_on=false;}
}
просто перепутал, наверное. Типа, сначала выключено, но тогда включить. А когда включено, то выключить. Как кнопку: отжал зажал и т.д.