ネストした関数
Variable "%s" will not stay shared というエラーを探していて発見した.
perldoc perldiag らしい.
そうだなぁ.関数がネストするとレキシカルスコープと似合わない.
デフォルトだと関数定義がパッケージスコープだから,
クロージャーをレキシカルスコープに抑えればいいのは同意.
これとは別に,単に変数を共有したい場合は,外側のスコープを作ればいい.
{ # $c のスコープ my $c; sub t1 { $c }; sub t2 { $c }; } t1; t2;
JavaScript は,へーって思った.
function をネストするとローカルスコープになるのかぁ.
完全に忘れてるな.
Schemer 観点だと普通な感じ.
>>> (function () { function fff () { alert("called fff"); } })(); fff(); ReferenceError: fff is not defined
> ((lambda () (define (a) (print "a")))) #<undef> > (a) *** ERROR: unbound variable: a