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&amp;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 &lt; 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>