Me
• Shoichi Kaji
• pause/github: skaji
• Perl5: cpm, App::FatPacker::Simple,
Mojo::SlackRTM
• Perl6: mi6, Frinfon, evalbot in Slack
Slide 3
Slide 3 text
Perl6ʹ
Plack͋Δͷ?
Slide 4
Slide 4 text
Yes
Slide 5
Slide 5 text
Crust
https://github.com/tokuhirom/p6-Crust
Slide 6
Slide 6 text
$ crustup -e '-> $e {200, [], ["hello world"]}'
http server is ready: http://127.0.0.1:5000/
$ curl http://localhost:5000
hello world
Slide 7
Slide 7 text
# app.p6
use v6;
use Frinfon;
get "/" => sub ($c) {
$c.render-text("hello world\n");
};
get "/:user" => sub ($c) {
my $user = $c.captured;
$c.render-json: { message => "hello $user!" };
};
app;
$ crustup app.p6
http server is ready: http://127.0.0.1:5000/
minimal sinatra͋Δ
ϦΞΫςΟϒ
ϓϩάϥϛϯάͬͯʁ
• ࢀߟURL
• (A) ͳͥϦΞΫςΟϒϓϩάϥϛϯάॏཁ͔ɻhttp://d.hatena.ne.jp/
pokarim/20101226
• (B) The introduction to Reactive Programming you've been missing
https://gist.github.com/staltz/868e7e9bc2a7b8c1f754
• (C) What is (functional) reactive programming? http://
stackoverflow.com/questions/1028250/what-is-functional-reactive-
programming
• ͜ΕΒʹΑΔͱϦΞΫςΟϒϓϩάϥϛϯάͱ
࣌ؒͱͱʹมԽ͠͏Δ = ࣌ؒॱʹฒΜͩΠϕϯτͷྻ = ετϦʔϜ
Λத৺ʹͦ͑ͯϓϩάϥϛϯά͢Δ͜ͱɻ
Slide 15
Slide 15 text
࣍ͷࣜΛߟ͑Δɻ
a=2Ͱb=3͔ͩΒɺc=2+3=5Ͱ͋Δɻ
ͯ͞গ͕࣌ؒ͠ܦ͔ͬͯΒa=6ͱೖͯ͠
ͪΖΜcมΘΒͣ5ͷ··Ͱ͋Δɻ
͜͜ͰϦΞΫςΟϒϓϩάϥϛϯάͷཱʹཱͬͯ
ߟ͑Δͱɺa=6ʹม͑ͨͱ͖c9ʹͳΔɻ
ྫ
a = 2
b = 3
c = a + b
Slide 16
Slide 16 text
͢ͳΘͪϦΞΫςΟϒϓϩάϥϛϯάͷཱͰ
a,b,cΛ࣌ؒͱͱʹมԽ͠͏Δ=ετϦʔϜͱ
ଊ͑Δɻઌ΄ͲͷࣜΛ͏গ͠આ໌తʹॻ͘ͱ
ྫ
a = ࣌ؒͱͱʹมԽ͠͏ΔͰॳظ2ɺগ͔ͯ͠͠Β6ʹมԽ
b = ࣌ؒͱͱʹมԽ͠͏ΔͰॳظ3
c = ࣌ؒͱͱʹมԽ͠͏Δaͱbͷ
a
b
c
ԣ࣌ؒ࣠
2
5
3
6
9