More Related Content
Similar to Nambapm_napthats
Similar to Nambapm_napthats (6)
Nambapm_napthats
- 2. 自己紹介
● napthats (ザッツ)
● napthats.com
● 言語:Perl, Scala, Java, Haskell, …
● Perl暦:三年ぐらい
● 最近はScalaが多い
– Perlはちょっとしたテキスト変換とかに使う
● お題は無理やり
- 3. 高階関数
● 関数を受け取ったり返したりする関数
● 関数型言語によく出てくる
● Perlだとmapとか
● print(map {$_ + 2} (1, 2, 3))
– 345
– mapは{$_ + 2}という関数を受け取る
- 4. 高階関数
● 関数を投げ返す関数
● sub f {
● my $x = shift;
● return sub {
● my $y = shift;
● return $x + $y;
● }
● }
- 5. 高階関数
● 関数を投げ返す関数
● sub f {
● my $x = shift;
● return sub {
● my $y = shift;
● return $x + $y;
● }
● }
- 6. 高階関数
● 使い方
● my fixed_f = f(3);
● print fixed_f(4); #7
- 7. カリー化
● 多引数関数を高階関数に変換する
● 「xとyを受け取って結果を返す関数」を「xを
受け取って『yを受け取って結果を返す関数』
を返す関数」に
● 実はさっき出てきた
- 8. カリー化
● sub f_curry {
● my $x = shift;
● return sub {
● my $y = shift;
● return $x + $y;
● }
● }
- 9. カリー化
● 普通に書くとこう
● sub f {
● my $x = shift;
● my $y = shift;
● return $x + $y;
● }
- 10. カリー化
● f(3, 4)
● f_curry(3)->(4)
● 関数を受け取って自動でカリー化する関数も書
けます