Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
curry.php
Search
Kazunori Otani
March 29, 2014
Technology
0
620
curry.php
A functional programming using php.
Kazunori Otani
March 29, 2014
Tweet
Share
More Decks by Kazunori Otani
See All by Kazunori Otani
SLI, SLOとカオスエンジニアリング、そしてオブザーバビリティ SRE Lounge #12
katzchang
4
2.4k
オビザーバビリティ成熟モデル
katzchang
1
3.8k
広告配信におけるパフォーマンス対策、やるかやらないか
katzchang
2
7.3k
高スループット・低レイテンシーなWEBサービスにおけるパフォーマンス対策の現実
katzchang
4
1.1k
モニタリングだいじというはなし
katzchang
1
190
プロビジョニングツールはMakeで決まりだろ
katzchang
12
9.5k
頑張らないScala
katzchang
2
2.7k
Immutable Infrastructure #1
katzchang
1
5.1k
zgok-sunrise
katzchang
1
340
Other Decks in Technology
See All in Technology
Autonomous Database Cloud 技術詳細 / adb-s_technical_detail_jp
oracle4engineer
PRO
15
39k
標準ライブラリの奥深アップデートを掘り下げよう!
logica0419
2
390
Binary Authorizationと友達になろう / Let's be friends with Binary Authorization
iselegant
2
130
Staff Engineer / 20240827 Yuichiro Masui
shift_evolve
0
150
contenteditableと向き合う
kikuchikakeru
2
150
技術力あげたい
hisaichi5518
2
2.8k
AWS IAM Identity Center議論会 〜 認証認可結合モデルと認証認可分離モデル / 20240827-jawsug-arch-iam_identity_center
opelab
3
320
Datadog を使ったプロダクトとクラウドの セキュリティモニタリング
mrtc0
0
460
開発者体験を意識した開発チームの生産性向上の取り組み
ham0215
3
650
音声AIエージェントの世界とRetell AI入門 / Introduction to the World of Voice AI Agents and Retell AI
rkaga
3
470
技術ブログや登壇資料を秒で作るコツ伝授します
minorun365
PRO
16
4.4k
20240906_JAWS_Yamanashi_#1_leap_beyond_the_AWS_all_certifications
tsumita
1
110
Featured
See All Featured
BBQ
matthewcrist
83
9.1k
The Power of CSS Pseudo Elements
geoffreycrofte
71
5.2k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
190
16k
Building an army of robots
kneath
302
42k
Making Projects Easy
brettharned
113
5.8k
Speed Design
sergeychernyshev
18
400
Typedesign – Prime Four
hannesfritz
38
2.3k
Fantastic passwords and where to find them - at NoRuKo
philnash
47
2.7k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
22
3.9k
Designing for humans not robots
tammielis
248
25k
Into the Great Unknown - MozCon
thekraken
28
1.4k
Producing Creativity
orderedlist
PRO
340
39k
Transcript
DVSSZQIQ LZPO@LBP@XFEEJOH !LBU[DIBOH
21)1͖Ͱ͔͢ʁ
!LBU[DIBOH
21)1͖Ͱ͔͢ʁ
ʊਓਓਓਓਓਓਓਓਓਓਓਓਓʊ ʼɹಥવ4USJOH͕*OUʹมΘΔɹʻ ʉ:?:?:?:?:?:?:?:?:?:ʉ
ʮྫ͑ɺ1)1Λආ͚Δʯ
IUUQKBXJLJQFEJBPSHXJLJ&&"&"&"#3BTNVT@-FSEPSG@DSPQQFEKQH
1)1JTBCPVUBTFYDJUJOHBTZPVSUPPUICSVTI :PVVTFJUFWFSZEBZ JUEPFTUIFKPC JUJTBTJNQMFUPPM TPXIBU IUUQFOXJLJRVPUFPSHXJLJ3BTNVT@-FSEPSG
「PHPは、歯ブラシみたいなものですね。 毎日使うものですけど、だから何でしょう?」 IUUQBOPOEIBUFMBCPKQ
None
+BWBͱൺֱ
ແ໊͕ؔ͋Δ ˞+BWBҎલͱͷൺֱ
<?PHP $f = function($a, $b) { return $a + $b;
}; echo $f(2,3); // => 5
<?PHP $f = (function($a, $b) { return $a * $b;
})(2,3); // FAIL!!!
<?PHP $fib = function($x) { return $x < 2 ?
$x : $fib($x-1) + $fib($x-2); })); echo $fib(6); // FAIL!!
ΧϦʔԽ
IUUQTHJTUHJUIVCDPNLBU[DIBOH ˞༵ۚޕޙͰ͢
<?PHP $f = F::curry( function($_) { return $_[0] + $_[1];
}); echo $f->_(2)->_(3)->_();
IUUQTHJTUHJUIVCDPNBKJZPTIJWH CBECEF ˞༵ۚޕޙͰ͢
<?PHP $c = curry( function($a, $b){ return $a + $b;
}); echo $c->_(2)->_(3);
<?PHP function YComb($f) { $yc = curry( function($y, $x) use
($f) { return $f($y($y), $x); }); return $yc($yc); }
<?PHP echo (YComb(curry( function($f, $x){ return $x < 2 ?
$x : $f($x-1) + $f($x-2); })))->_(6);
ʮ͜Εɺࣃϒϥγͱ͍ͯ͠ʹͳΔϨϕϧʯ
-PWFZPVS1)1
None