SlideShare una empresa de Scribd logo
1 de 11
関数から関数を投げる

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

●   関数を受け取って自動でカリー化する関数も書
    けます
おわり

Más contenido relacionado

La actualidad más candente

Ruby 同好会宣言
Ruby 同好会宣言Ruby 同好会宣言
Ruby 同好会宣言Yuya Takeyama
 
姫路IT系勉強会 Vol.11 第0回L-1グランプリ bash
姫路IT系勉強会 Vol.11 第0回L-1グランプリ bash姫路IT系勉強会 Vol.11 第0回L-1グランプリ bash
姫路IT系勉強会 Vol.11 第0回L-1グランプリ bashJun Nogata
 
Web技術勉強会 第25回
Web技術勉強会 第25回Web技術勉強会 第25回
Web技術勉強会 第25回龍一 田中
 
言語処理系入門4
言語処理系入門4言語処理系入門4
言語処理系入門4Kenta Hattori
 

La actualidad más candente (7)

Applicative functor
Applicative functorApplicative functor
Applicative functor
 
Ruby 同好会宣言
Ruby 同好会宣言Ruby 同好会宣言
Ruby 同好会宣言
 
勉強会課題①
勉強会課題①勉強会課題①
勉強会課題①
 
姫路IT系勉強会 Vol.11 第0回L-1グランプリ bash
姫路IT系勉強会 Vol.11 第0回L-1グランプリ bash姫路IT系勉強会 Vol.11 第0回L-1グランプリ bash
姫路IT系勉強会 Vol.11 第0回L-1グランプリ bash
 
Web技術勉強会 第25回
Web技術勉強会 第25回Web技術勉強会 第25回
Web技術勉強会 第25回
 
言語処理系入門4
言語処理系入門4言語処理系入門4
言語処理系入門4
 
F#のすすめ
F#のすすめF#のすすめ
F#のすすめ
 

Destacado (10)

RedIndustria - Robson Braga de Andrade
RedIndustria - Robson Braga de AndradeRedIndustria - Robson Braga de Andrade
RedIndustria - Robson Braga de Andrade
 
11budget
11budget11budget
11budget
 
INEC | Junho 2014 | Divulgação 27/06/2014
INEC | Junho 2014 | Divulgação 27/06/2014INEC | Junho 2014 | Divulgação 27/06/2014
INEC | Junho 2014 | Divulgação 27/06/2014
 
"Novidades Legislativas" 59 | 3 de setembro de 2013
 "Novidades Legislativas" 59 | 3 de setembro de 2013 "Novidades Legislativas" 59 | 3 de setembro de 2013
"Novidades Legislativas" 59 | 3 de setembro de 2013
 
Pays basque euskale herria
Pays basque euskale herriaPays basque euskale herria
Pays basque euskale herria
 
A Fotografia na hora certa
A Fotografia na hora certaA Fotografia na hora certa
A Fotografia na hora certa
 
Cómo hacer un blog (1)
Cómo hacer un blog (1)Cómo hacer un blog (1)
Cómo hacer un blog (1)
 
Novidades Legislativas Nº22 | 17/04/2013
Novidades Legislativas Nº22 | 17/04/2013Novidades Legislativas Nº22 | 17/04/2013
Novidades Legislativas Nº22 | 17/04/2013
 
Hp 48 guia rapida
Hp 48 guia rapidaHp 48 guia rapida
Hp 48 guia rapida
 
Indicadores Industriais | Julho/2011
Indicadores Industriais | Julho/2011Indicadores Industriais | Julho/2011
Indicadores Industriais | Julho/2011
 

Similar a Nambapm_napthats

"What Does Your Code Smell Like?"で学ぶPerl6
"What Does Your Code Smell Like?"で学ぶPerl6"What Does Your Code Smell Like?"で学ぶPerl6
"What Does Your Code Smell Like?"で学ぶPerl6risou
 
PHP5.5新機能「ジェネレータ」初心者入門
PHP5.5新機能「ジェネレータ」初心者入門PHP5.5新機能「ジェネレータ」初心者入門
PHP5.5新機能「ジェネレータ」初心者入門kwatch
 
関数プログラミング入門
関数プログラミング入門関数プログラミング入門
関数プログラミング入門Hideyuki Tanaka
 
たのしい高階関数
たのしい高階関数たのしい高階関数
たのしい高階関数Shinichi Kozake
 

Similar a Nambapm_napthats (6)

"What Does Your Code Smell Like?"で学ぶPerl6
"What Does Your Code Smell Like?"で学ぶPerl6"What Does Your Code Smell Like?"で学ぶPerl6
"What Does Your Code Smell Like?"で学ぶPerl6
 
Haskell超入門 Part.1
Haskell超入門 Part.1Haskell超入門 Part.1
Haskell超入門 Part.1
 
PHP5.5新機能「ジェネレータ」初心者入門
PHP5.5新機能「ジェネレータ」初心者入門PHP5.5新機能「ジェネレータ」初心者入門
PHP5.5新機能「ジェネレータ」初心者入門
 
PHP7を魔改造した話
PHP7を魔改造した話PHP7を魔改造した話
PHP7を魔改造した話
 
関数プログラミング入門
関数プログラミング入門関数プログラミング入門
関数プログラミング入門
 
たのしい高階関数
たのしい高階関数たのしい高階関数
たのしい高階関数
 

Último

LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptxsn679259
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...Toru Tamaki
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsWSO2
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video UnderstandingToru Tamaki
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Gamesatsushi061452
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 

Último (10)

LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 

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) ● 関数を受け取って自動でカリー化する関数も書 けます