Perlについての質問箱 59箱目
■ このスレッドは過去ログ倉庫に格納されています
0065デフォルトの名無しさん
2013/07/27(土) NY:AN:NY.AN前スレ869ですが元となったコードを完全に乗せると以下の様な物になります。
DSLのメソッドチェーンをreduceで処理しようとしていました。
具体的に言うとfn(a)(b)(c)というシンタックスを(fn, a, b, c)に正規化し
fnをaに適用しその返り値をbに適用しその返り値をcに適用するという処理です。
これはまさにreduceの出番だと合点したものでしたが
猫を電子レンジで乾かすようなものだったのですね。
return reduce {
my ($func, $argv) = ($a, $b);
my @evaled_argv = eval_argv($argv);
my $env = []; # reduceの中はスコープがきられない
my $lexical_table = {};
my $arg_set;
my $closure = my_eval($func);
my $func_body = str_to_show($closure->[1]);
@{$env} = (@{$closure->[2]}, $lexical_table);
push @envs, $env;
my $i=0;
for (@evaled_argv) {
$envs[-1][-1]{"_ARG$i"} = $_;
$i++;
}
my $result = my_eval($func_body, "text");
pop @envs;
$result
} @normalized;
■ このスレッドは過去ログ倉庫に格納されています