新規作成 | 管理 | 差分 | 検索 | FrontPage | ページ一覧 | 更新履歴 | RSS

PlugIn/let - 変数定義

管理

変数定義

$plugin->special("let",
  "変数定義",
  sub {
    my @vars = @{ shift() };
    my @body = @_;
    my %binding;
    foreach my $pair (@vars) {
      my $var = $pair->[0];
      die "$var is not a variable" unless $var =~ /^\$/;
      my ($val) = $plugin->evl($pair->[1]);
      $binding{$var} = $val;
    }
    $plugin->extend_env(\%binding);
    my @result = map { $plugin->evl($_) } @body;
    $plugin->shrink_env;
    return @result;
  }
);