Nambapm_napthats

295 views
281 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
295
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Nambapm_napthats

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

×