Submit Search
Upload
ドキッ!記号だらけの無名関数
•
1 like
•
3,134 views
Shinya Hayakawa
Follow
Shibuya Perl Mongersテクニカルトーク#17でのLTです。
Read less
Read more
Technology
Report
Share
Report
Share
1 of 37
Download now
Download to read offline
Recommended
F#によるFunctional Programming入門
F#によるFunctional Programming入門
bleis tift
Emcpp item31
Emcpp item31
mitsutaka_takeda
ゆとりが数週間でC++を始めるようです
ゆとりが数週間でC++を始めるようです
Eric Sartre
Better C#の脱却を目指して
Better C#の脱却を目指して
bleis tift
Impractical Introduction of Boost Spirit Qi [PPT]
Impractical Introduction of Boost Spirit Qi [PPT]
yak1ex
Unity2015_No10_~UGUI&Audio~
Unity2015_No10_~UGUI&Audio~
CHY72
Scala 初心者が米田の補題を Scala で考えてみた
Scala 初心者が米田の補題を Scala で考えてみた
Kazuyuki TAKASE
並行プログラミングと継続モナド
並行プログラミングと継続モナド
Kousuke Ruichi
Recommended
F#によるFunctional Programming入門
F#によるFunctional Programming入門
bleis tift
Emcpp item31
Emcpp item31
mitsutaka_takeda
ゆとりが数週間でC++を始めるようです
ゆとりが数週間でC++を始めるようです
Eric Sartre
Better C#の脱却を目指して
Better C#の脱却を目指して
bleis tift
Impractical Introduction of Boost Spirit Qi [PPT]
Impractical Introduction of Boost Spirit Qi [PPT]
yak1ex
Unity2015_No10_~UGUI&Audio~
Unity2015_No10_~UGUI&Audio~
CHY72
Scala 初心者が米田の補題を Scala で考えてみた
Scala 初心者が米田の補題を Scala で考えてみた
Kazuyuki TAKASE
並行プログラミングと継続モナド
並行プログラミングと継続モナド
Kousuke Ruichi
yieldとreturnの話
yieldとreturnの話
bleis tift
Emcjp item21
Emcjp item21
MITSUNARI Shigeo
templateとautoの型推論
templateとautoの型推論
MITSUNARI Shigeo
Brief introduction of Boost.ICL
Brief introduction of Boost.ICL
yak1ex
C++14言語編
C++14言語編
Mitsuru Kariya
モナドハンズオン前座
モナドハンズオン前座
bleis tift
組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由
kikairoya
Effective modern C++ 勉強会 #3 Item 12
Effective modern C++ 勉強会 #3 Item 12
Keisuke Fukuda
クソザコ鳥頭が非順序連想コンテナに入門してみた
クソザコ鳥頭が非順序連想コンテナに入門してみた
Mitsuru Kariya
言語処理系入門3
言語処理系入門3
Kenta Hattori
定理証明言語によるハードウェア検証
定理証明言語によるハードウェア検証
Shunji Nishimura
競技プログラミングのためのC++入門
競技プログラミングのためのC++入門
natrium11321
.NET系開発者から見たJava
.NET系開発者から見たJava
bleis tift
Emcjp item33,34
Emcjp item33,34
MITSUNARI Shigeo
Scala 初心者が Hom 函手を Scala で考えてみた
Scala 初心者が Hom 函手を Scala で考えてみた
Kazuyuki TAKASE
言語処理系入門2
言語処理系入門2
Kenta Hattori
C++0x総復習
C++0x総復習
道化師 堂華
言語処理系入門1
言語処理系入門1
Kenta Hattori
C++ tips4 cv修飾編
C++ tips4 cv修飾編
道化師 堂華
現実(えくせる)と戦う話
現実(えくせる)と戦う話
bleis tift
Class projects
Class projects
Tina Salacup
NZKR Family Tree Paert 2
NZKR Family Tree Paert 2
manalino
More Related Content
What's hot
yieldとreturnの話
yieldとreturnの話
bleis tift
Emcjp item21
Emcjp item21
MITSUNARI Shigeo
templateとautoの型推論
templateとautoの型推論
MITSUNARI Shigeo
Brief introduction of Boost.ICL
Brief introduction of Boost.ICL
yak1ex
C++14言語編
C++14言語編
Mitsuru Kariya
モナドハンズオン前座
モナドハンズオン前座
bleis tift
組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由
kikairoya
Effective modern C++ 勉強会 #3 Item 12
Effective modern C++ 勉強会 #3 Item 12
Keisuke Fukuda
クソザコ鳥頭が非順序連想コンテナに入門してみた
クソザコ鳥頭が非順序連想コンテナに入門してみた
Mitsuru Kariya
言語処理系入門3
言語処理系入門3
Kenta Hattori
定理証明言語によるハードウェア検証
定理証明言語によるハードウェア検証
Shunji Nishimura
競技プログラミングのためのC++入門
競技プログラミングのためのC++入門
natrium11321
.NET系開発者から見たJava
.NET系開発者から見たJava
bleis tift
Emcjp item33,34
Emcjp item33,34
MITSUNARI Shigeo
Scala 初心者が Hom 函手を Scala で考えてみた
Scala 初心者が Hom 函手を Scala で考えてみた
Kazuyuki TAKASE
言語処理系入門2
言語処理系入門2
Kenta Hattori
C++0x総復習
C++0x総復習
道化師 堂華
言語処理系入門1
言語処理系入門1
Kenta Hattori
C++ tips4 cv修飾編
C++ tips4 cv修飾編
道化師 堂華
現実(えくせる)と戦う話
現実(えくせる)と戦う話
bleis tift
What's hot
(20)
yieldとreturnの話
yieldとreturnの話
Emcjp item21
Emcjp item21
templateとautoの型推論
templateとautoの型推論
Brief introduction of Boost.ICL
Brief introduction of Boost.ICL
C++14言語編
C++14言語編
モナドハンズオン前座
モナドハンズオン前座
組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由
Effective modern C++ 勉強会 #3 Item 12
Effective modern C++ 勉強会 #3 Item 12
クソザコ鳥頭が非順序連想コンテナに入門してみた
クソザコ鳥頭が非順序連想コンテナに入門してみた
言語処理系入門3
言語処理系入門3
定理証明言語によるハードウェア検証
定理証明言語によるハードウェア検証
競技プログラミングのためのC++入門
競技プログラミングのためのC++入門
.NET系開発者から見たJava
.NET系開発者から見たJava
Emcjp item33,34
Emcjp item33,34
Scala 初心者が Hom 函手を Scala で考えてみた
Scala 初心者が Hom 函手を Scala で考えてみた
言語処理系入門2
言語処理系入門2
C++0x総復習
C++0x総復習
言語処理系入門1
言語処理系入門1
C++ tips4 cv修飾編
C++ tips4 cv修飾編
現実(えくせる)と戦う話
現実(えくせる)と戦う話
Viewers also liked
Class projects
Class projects
Tina Salacup
NZKR Family Tree Paert 2
NZKR Family Tree Paert 2
manalino
Branding powepoint
Branding powepoint
Daniel Gold
презентация гуревич и.к.
презентация гуревич и.к.
Anton Surov
Stl bus journal 05 03 13 - river city empire
Stl bus journal 05 03 13 - river city empire
Major Brands
выступление по компетенциям
выступление по компетенциям
Demanessa
Gertrude stein's world
Gertrude stein's world
davidstevenbrooks
Who are
Who are
sinaloa1
Μονή Οσίου Λουκά
Μονή Οσίου Λουκά
paraskevit
Lenovo hall
Lenovo hall
dm0490126
Rio+20 module, part 1 11.30.11 don
Rio+20 module, part 1 11.30.11 don
ANPED1
Workshop key note article
Workshop key note article
Nazmul Karim
Prezentacja1
Prezentacja1
Karolina Ewa Leman
MOETS Club Class Events
MOETS Club Class Events
Rahil Bindra
Contemporary
Contemporary
sinaloa1
выступл.на конференции
выступл.на конференции
Demanessa
Zita 111216
Zita 111216
Tomoyuki Suzuki
Contemporary
Contemporary
sinaloa1
سيكولوجيه الابتكار
سيكولوجيه الابتكار
M_taqniyat
Carbon tax. impacts on businesses and individuals
Carbon tax. impacts on businesses and individuals
LOVETTS Consulting Accountans and Business Advisers
Viewers also liked
(20)
Class projects
Class projects
NZKR Family Tree Paert 2
NZKR Family Tree Paert 2
Branding powepoint
Branding powepoint
презентация гуревич и.к.
презентация гуревич и.к.
Stl bus journal 05 03 13 - river city empire
Stl bus journal 05 03 13 - river city empire
выступление по компетенциям
выступление по компетенциям
Gertrude stein's world
Gertrude stein's world
Who are
Who are
Μονή Οσίου Λουκά
Μονή Οσίου Λουκά
Lenovo hall
Lenovo hall
Rio+20 module, part 1 11.30.11 don
Rio+20 module, part 1 11.30.11 don
Workshop key note article
Workshop key note article
Prezentacja1
Prezentacja1
MOETS Club Class Events
MOETS Club Class Events
Contemporary
Contemporary
выступл.на конференции
выступл.на конференции
Zita 111216
Zita 111216
Contemporary
Contemporary
سيكولوجيه الابتكار
سيكولوجيه الابتكار
Carbon tax. impacts on businesses and individuals
Carbon tax. impacts on businesses and individuals
More from Shinya Hayakawa
近現代史勉強会 #1
近現代史勉強会 #1
Shinya Hayakawa
Oculus Game Jam in Japan #3
Oculus Game Jam in Japan #3
Shinya Hayakawa
casualにRubyをパースしてみたい
casualにRubyをパースしてみたい
Shinya Hayakawa
第1回 プログラマのための計算機科学
第1回 プログラマのための計算機科学
Shinya Hayakawa
プログラマのための計算機科学はじめました
プログラマのための計算機科学はじめました
Shinya Hayakawa
思いやりプログラミング 2013
思いやりプログラミング 2013
Shinya Hayakawa
イラストでGit! agatsuma.survive#03
イラストでGit! agatsuma.survive#03
Shinya Hayakawa
guRuby Community Appeal in RubyKaigi 2013 (safe ver.)
guRuby Community Appeal in RubyKaigi 2013 (safe ver.)
Shinya Hayakawa
魔法少女のまど★ワーカ(手書きver)
魔法少女のまど★ワーカ(手書きver)
Shinya Hayakawa
Vi Boot Camp #1
Vi Boot Camp #1
Shinya Hayakawa
More from Shinya Hayakawa
(10)
近現代史勉強会 #1
近現代史勉強会 #1
Oculus Game Jam in Japan #3
Oculus Game Jam in Japan #3
casualにRubyをパースしてみたい
casualにRubyをパースしてみたい
第1回 プログラマのための計算機科学
第1回 プログラマのための計算機科学
プログラマのための計算機科学はじめました
プログラマのための計算機科学はじめました
思いやりプログラミング 2013
思いやりプログラミング 2013
イラストでGit! agatsuma.survive#03
イラストでGit! agatsuma.survive#03
guRuby Community Appeal in RubyKaigi 2013 (safe ver.)
guRuby Community Appeal in RubyKaigi 2013 (safe ver.)
魔法少女のまど★ワーカ(手書きver)
魔法少女のまど★ワーカ(手書きver)
Vi Boot Camp #1
Vi Boot Camp #1
Recently uploaded
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
sugiuralab
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
FumieNakayama
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
Hiroshi Tomioka
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
UEHARA, Tetsutaro
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
博三 太田
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
Yuki Kikuchi
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
akihisamiyanaga1
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
FumieNakayama
Recently uploaded
(8)
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
ドキッ!記号だらけの無名関数
1.
ポロリもあるよ!
2.
記号だらけの 無名関数 Shinya Hayakawa TSURUMAU Shibuya.pm #17 2015/06/02 ドキッ!
3.
自己紹介 昔は Perl を使ってました CPAN
Authorではない
4.
「lambda 完全解説」 http://cpplover.blogspot.jp/2009/11/lambda.html
5.
「lambdaを定義しよう」 int main() { [](){} ; }
6.
「lambdaを呼び出そう」 int main() { [](){}() ; }
7.
「lambdaの文法解説」 int main() { [] //
[ lambda-capture ] () // ( parameter-declaration-clause ) {} // compound-statement () // Function call expression ; }
8.
Perlでもやりたく なりますよね?
9.
準備 括弧のみで可能な記述 syntax OKな項を探す 黒魔術には頼らない
10.
括弧のみ [] () {} 3 通り
11.
括弧のみ [] () {} syntax OK syntax OK syntax
OK 3 通り
12.
括弧のペア [][] []() []{} ()[] ()() (){} {}[] {}() {}{} 3 x 3
= 9 通り
13.
括弧のペア [][] []() []{} ()[] ()() (){} {}[] {}() {}{} 3 x 3
= 9 通り syntax error syntax error syntax error syntax error syntax error syntax error syntax error syntax error syntax error
14.
注目 ()[]
15.
list slice |'(' expr
')' '[' expr ‘]’ … |'(' ')' '[' expr ‘]’ ! - perly.y
16.
修正後 ()[()]
17.
修正後 ()[()] syntax OK
18.
我々は ()[()]を 手に入れました
19.
ところで
20.
scalar or list? ()[…] ココ
21.
scalar or list? (LIST)[LIST] プログラミングPerl第3版
p.87
22.
問題1.1☆ print( ("foo")[()] );
23.
問題1.1☆ print( ("foo")[()] ); → ""
24.
問題1.2☆☆ print scalar( ("foo")[()] );
25.
問題1.2☆☆ print scalar( ("foo")[()] ); → foo
26.
解説 リストをリストコンテキスト以外で評価した時 のアレ。 カンマ演算子でスタックに積まれた値の最後 以外が捨てられる。 $x = ("a","b","c");
# $x="c" $x = ("a")[2,1,0]; # $x="a"
27.
()は数値で…? 0+(); " 0 int(());
" 0
28.
解説 最後の値である()が数値で0と評価 され、リストの0番目の要素となる $x = ("foo")[()]; "
$x = "foo"
29.
応用 $x = ("foo")[()]; $x
= ("foo")[((()))]; $x = ("foo")[(),(),()];
30.
問題2.1☆☆☆ print( (sub{"foo"})[()]->() );
31.
問題2.1☆☆☆ print( (sub{"foo"})[()]->() ); → foo
32.
問題2.2☆☆☆☆☆☆ print( (sub{"foo"})[()]->(1) );
33.
問題2.2☆☆☆☆☆☆ print( (sub{"foo"})[()]->(1) ); → Can't use
an undefined value as a subroutine reference
34.
解説 print( (sub{"foo"})[()]->(1) ); スタックに積まれた関数呼び出し の引数が、pp_lsliceに食われ てしまっている
35.
ここで 残念なお知らせ
36.
無名関数について CODEを生成するにはsub キーワード必須 プロトタイプで&を使う… 括弧だけで関数の定義、 呼び出しはできない
37.
まとめ ()[()] 記法 空リストの可能性 やっぱりPerl楽しいです!
Download now