SlideShare a Scribd company logo
関数から関数を投げる

  @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)

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

More Related Content

What's hot

Applicative functor
Applicative functorApplicative functor
Applicative functor
Yuichi Adachi
 
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グランプリ bash
Jun Nogata
 
Web技術勉強会 第25回
Web技術勉強会 第25回Web技術勉強会 第25回
Web技術勉強会 第25回
龍一 田中
 
言語処理系入門4
言語処理系入門4言語処理系入門4
言語処理系入門4
Kenta Hattori
 
F#のすすめ
F#のすすめF#のすすめ
F#のすすめ
Hiromu Sasaki
 

What's hot (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#のすすめ
 

Viewers also liked

RedIndustria - Robson Braga de Andrade
RedIndustria - Robson Braga de AndradeRedIndustria - Robson Braga de Andrade
RedIndustria - Robson Braga de Andrade
Confederação Nacional da Indústria
 
11budget
11budget11budget
11budget
akas_md
 
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
Confederação Nacional da Indústria
 
"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
Confederação Nacional da Indústria
 
Pays basque euskale herria
Pays basque euskale herriaPays basque euskale herria
Pays basque euskale herriaCarmen Santos
 
A Fotografia na hora certa
A Fotografia na hora certaA Fotografia na hora certa
A Fotografia na hora certa
Luis Antonio Rebolo
 
Cómo hacer un blog (1)
Cómo hacer un blog (1)Cómo hacer un blog (1)
Cómo hacer un blog (1)
TeresaAnton
 
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
Confederação Nacional da Indústria
 
Hp 48 guia rapida
Hp 48 guia rapidaHp 48 guia rapida
Hp 48 guia rapida
pibanez01
 
Indicadores Industriais | Julho/2011
Indicadores Industriais | Julho/2011Indicadores Industriais | Julho/2011
Indicadores Industriais | Julho/2011
Confederação Nacional da Indústria
 

Viewers also liked (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 to 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?"で学ぶPerl6
risou
 
PHP5.5新機能「ジェネレータ」初心者入門
PHP5.5新機能「ジェネレータ」初心者入門PHP5.5新機能「ジェネレータ」初心者入門
PHP5.5新機能「ジェネレータ」初心者入門
kwatch
 
PHP7を魔改造した話
PHP7を魔改造した話PHP7を魔改造した話
PHP7を魔改造した話
Moriyoshi Koizumi
 
関数プログラミング入門
関数プログラミング入門関数プログラミング入門
関数プログラミング入門
Hideyuki Tanaka
 
たのしい高階関数
たのしい高階関数たのしい高階関数
たのしい高階関数
Shinichi Kozake
 

Similar to 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を魔改造した話
 
関数プログラミング入門
関数プログラミング入門関数プログラミング入門
関数プログラミング入門
 
たのしい高階関数
たのしい高階関数たのしい高階関数
たのしい高階関数
 

Recently uploaded

論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
Toru Tamaki
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
CRI Japan, Inc.
 
Generating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language ModelsGenerating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language Models
harmonylab
 
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援しますキンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
Takayuki Nakayama
 
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
Matsushita Laboratory
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
Toru Tamaki
 
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさJSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
0207sukipio
 
This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
chiefujita1
 
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
t m
 

Recently uploaded (9)

論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 
Generating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language ModelsGenerating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language Models
 
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援しますキンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
 
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
 
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさJSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
 
This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
 
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
 

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