Mercurial > hg > Events > OSC2019
comparison slide.pdf.html @ 4:8f21c0f19c09
update
author | Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Wed, 17 Apr 2019 19:03:18 +0900 |
parents | e43f47edd11a |
children | e87cc0746622 |
comparison
equal
deleted
inserted
replaced
3:e43f47edd11a | 4:8f21c0f19c09 |
---|---|
68 | 68 |
69 <div class='slide '> | 69 <div class='slide '> |
70 <!-- === begin markdown block === | 70 <!-- === begin markdown block === |
71 | 71 |
72 generated by markdown/1.2.0 on Ruby 2.4.2 (2017-09-14) [x86_64-darwin16] | 72 generated by markdown/1.2.0 on Ruby 2.4.2 (2017-09-14) [x86_64-darwin16] |
73 on 2019-04-16 19:03:37 +0900 with Markdown engine kramdown (1.16.2) | 73 on 2019-04-17 18:16:29 +0900 with Markdown engine kramdown (1.16.2) |
74 using options {} | 74 using options {} |
75 --> | 75 --> |
76 <h2 id="section">このセッションの内容</h2> | 76 <h2 id="section">このセッションの内容</h2> |
77 | 77 |
78 <ul> | 78 <ul> |
140 | 140 |
141 </div> | 141 </div> |
142 <div class='slide '> | 142 <div class='slide '> |
143 <!-- _S9SLIDE_ --> | 143 <!-- _S9SLIDE_ --> |
144 | 144 |
145 <h2 id="perl6-3">Perl6の処理系の構成</h2> | 145 <h2 id="perl6-3">Perl6の言語的な特徴</h2> |
146 | |
147 <ul> | |
148 <li>型を独自に定義することも可能</li> | |
149 <li>入力の型によって実行する関数を変える事などができる</li> | |
150 </ul> | |
151 | |
152 <pre lang="perl6"><code>my subset Fizz of Int where * %% 3; | |
153 my subset Buzz of Int where * %% 5; | |
154 my subset FizzBuzz of Int where Fizz&Buzz; | |
155 my subset Number of Int where none Fizz|Buzz; | |
156 | |
157 proto sub fizzbuzz ($) { * } | |
158 multi sub fizzbuzz (FizzBuzz) { "FuzzBuzz" } | |
159 multi sub fizzbuzz (Fizz) { "Fizz" } | |
160 multi sub fizzbuzz (Buzz) { "Buzz" } | |
161 multi sub fizzbuzz (Number $number) { $number } | |
162 | |
163 fizzbuzz($_).say for 1..15; | |
164 </code></pre> | |
165 | |
166 </div> | |
167 <div class='slide '> | |
168 <!-- _S9SLIDE_ --> | |
169 | |
170 <h2 id="perl6-4">Perl6の処理系の構成</h2> | |
146 | 171 |
147 <ul> | 172 <ul> |
148 <li>Perl6の処理系は現在はRakudoと呼ばれる(歴史上複数存在する)</li> | 173 <li>Perl6の処理系は現在はRakudoと呼ばれる(歴史上複数存在する)</li> |
149 <li>Rakudoは3つのレイヤーから構成されている | 174 <li>Rakudoは3つのレイヤーから構成されている |
150 <ul> | 175 <ul> |
167 <li>NQP(NotQuitPerl Perlっぽい別の言語)でRakudoを記述している</li> | 192 <li>NQP(NotQuitPerl Perlっぽい別の言語)でRakudoを記述している</li> |
168 <li>NQPもNQPで記述されている為、 セルフビルド(自分自身で自分自身をコンパイルする)を行う</li> | 193 <li>NQPもNQPで記述されている為、 セルフビルド(自分自身で自分自身をコンパイルする)を行う</li> |
169 <li>NQPはPerl6の文法をベースにしているが、 制約がいくつか存在する</li> | 194 <li>NQPはPerl6の文法をベースにしているが、 制約がいくつか存在する</li> |
170 </ul> | 195 </ul> |
171 | 196 |
197 <pre><code>#! nqp | |
198 sub fib($n) { | |
199 $n < 2 ?? $n !! fib($n-1) + fib($n - 2); | |
200 } | |
201 | |
202 my $N := 29; | |
203 | |
204 my $t0 := nqp::time_n(); | |
205 my $z := fib($N); | |
206 my $t1 := nqp::time_n(); | |
207 | |
208 nqp::say("fib($N) = " ~ fib($N)); | |
209 nqp::say("time = " ~ ($t1-$t0)); | |
210 </code></pre> | |
211 | |
172 </div> | 212 </div> |
173 <div class='slide '> | 213 <div class='slide '> |
174 <!-- _S9SLIDE_ --> | 214 <!-- _S9SLIDE_ --> |
175 | 215 |
176 <h2 id="section-1">バイトコード</h2> | 216 <h2 id="section-1">バイトコード</h2> |