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

PlugIn/pa - 引数を部分的に与えた手続きを返す(partial-apply)

管理

引数を部分的に与えた手続きを返す(partial-apply)

$plugin->def("pa",
  "引数を部分的に与えた手続きを返す(partial-apply)",
  sub {
    my $op = shift;
    my @given = @_;
    return sub {
      my @args = @_;
      $plugin->evl([$op, @given, @args]);
    };
  }
);

管理

##((pa cat ワタシハ) カセイジン デス)

=> ワタシハカセイジンデス

(pa cat ワタシハ) が表す「ワタシハの後に引数文字列を連結する」という手続きに、カセイジン、デスの2つの引数を渡しています。

##(map (pa + 10) 1 2 3 4 5)

=> 11 12 13 14 15

1..5 の各数値に、 (pa + 10) が表す「引数に10を足す」手続きが適用されます。 それぞれが

(+ 10 1)
(+ 10 2)
(+ 10 3)
(+ 10 4)
(+ 10 5)

と評価されます。

解説

管理

partial-applyについては Wiliki:Scheme:手続きのcurry化 の下のほうに載っています。