Mercurial > hg > Events > OSC2019
changeset 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 |
files | slide.html slide.md slide.pdf.html |
diffstat | 3 files changed, 121 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/slide.html Tue Apr 16 19:04:05 2019 +0900 +++ b/slide.html Wed Apr 17 19:03:18 2019 +0900 @@ -86,7 +86,7 @@ <!-- === begin markdown block === generated by markdown/1.2.0 on Ruby 2.4.2 (2017-09-14) [x86_64-darwin16] - on 2019-04-16 19:03:37 +0900 with Markdown engine kramdown (1.16.2) + on 2019-04-17 18:16:29 +0900 with Markdown engine kramdown (1.16.2) using options {} --> <h2 id="section">このセッションの内容</h2> @@ -158,7 +158,32 @@ <div class='slide '> <!-- _S9SLIDE_ --> -<h2 id="perl6-3">Perl6の処理系の構成</h2> +<h2 id="perl6-3">Perl6の言語的な特徴</h2> + +<ul> + <li>型を独自に定義することも可能</li> + <li>入力の型によって実行する関数を変える事などができる</li> +</ul> + +<pre lang="perl6"><code>my subset Fizz of Int where * %% 3; +my subset Buzz of Int where * %% 5; +my subset FizzBuzz of Int where Fizz&Buzz; +my subset Number of Int where none Fizz|Buzz; + +proto sub fizzbuzz ($) { * } +multi sub fizzbuzz (FizzBuzz) { "FuzzBuzz" } +multi sub fizzbuzz (Fizz) { "Fizz" } +multi sub fizzbuzz (Buzz) { "Buzz" } +multi sub fizzbuzz (Number $number) { $number } + +fizzbuzz($_).say for 1..15; +</code></pre> + +</div> +<div class='slide '> +<!-- _S9SLIDE_ --> + +<h2 id="perl6-4">Perl6の処理系の構成</h2> <ul> <li>Perl6の処理系は現在はRakudoと呼ばれる(歴史上複数存在する)</li> @@ -185,6 +210,21 @@ <li>NQPはPerl6の文法をベースにしているが、 制約がいくつか存在する</li> </ul> +<pre><code>#! nqp +sub fib($n) { + $n < 2 ?? $n !! fib($n-1) + fib($n - 2); +} + +my $N := 29; + +my $t0 := nqp::time_n(); +my $z := fib($N); +my $t1 := nqp::time_n(); + +nqp::say("fib($N) = " ~ fib($N)); +nqp::say("time = " ~ ($t1-$t0)); +</code></pre> + </div> <div class='slide '> <!-- _S9SLIDE_ -->
--- a/slide.md Tue Apr 16 19:04:05 2019 +0900 +++ b/slide.md Wed Apr 17 19:03:18 2019 +0900 @@ -53,6 +53,27 @@ ``` !SLIDE +## Perl6の言語的な特徴 + +- 型を独自に定義することも可能 +- 入力の型によって実行する関数を変える事などができる + +```perl6 +my subset Fizz of Int where * %% 3; +my subset Buzz of Int where * %% 5; +my subset FizzBuzz of Int where Fizz&Buzz; +my subset Number of Int where none Fizz|Buzz; + +proto sub fizzbuzz ($) { * } +multi sub fizzbuzz (FizzBuzz) { "FuzzBuzz" } +multi sub fizzbuzz (Fizz) { "Fizz" } +multi sub fizzbuzz (Buzz) { "Buzz" } +multi sub fizzbuzz (Number $number) { $number } + +fizzbuzz($_).say for 1..15; +``` + +!SLIDE ## Perl6の処理系の構成 - Perl6の処理系は現在はRakudoと呼ばれる(歴史上複数存在する) @@ -70,6 +91,22 @@ - NQPもNQPで記述されている為、 セルフビルド(自分自身で自分自身をコンパイルする)を行う - NQPはPerl6の文法をベースにしているが、 制約がいくつか存在する +``` +#! nqp +sub fib($n) { + $n < 2 ?? $n !! fib($n-1) + fib($n - 2); +} + +my $N := 29; + +my $t0 := nqp::time_n(); +my $z := fib($N); +my $t1 := nqp::time_n(); + +nqp::say("fib($N) = " ~ fib($N)); +nqp::say("time = " ~ ($t1-$t0)); +``` + !SLIDE ## バイトコード - 最近のスクリプト言語は、 ソースコードを直接解釈せず、バイトコードに変換する
--- a/slide.pdf.html Tue Apr 16 19:04:05 2019 +0900 +++ b/slide.pdf.html Wed Apr 17 19:03:18 2019 +0900 @@ -70,7 +70,7 @@ <!-- === begin markdown block === generated by markdown/1.2.0 on Ruby 2.4.2 (2017-09-14) [x86_64-darwin16] - on 2019-04-16 19:03:37 +0900 with Markdown engine kramdown (1.16.2) + on 2019-04-17 18:16:29 +0900 with Markdown engine kramdown (1.16.2) using options {} --> <h2 id="section">このセッションの内容</h2> @@ -142,7 +142,32 @@ <div class='slide '> <!-- _S9SLIDE_ --> -<h2 id="perl6-3">Perl6の処理系の構成</h2> +<h2 id="perl6-3">Perl6の言語的な特徴</h2> + +<ul> + <li>型を独自に定義することも可能</li> + <li>入力の型によって実行する関数を変える事などができる</li> +</ul> + +<pre lang="perl6"><code>my subset Fizz of Int where * %% 3; +my subset Buzz of Int where * %% 5; +my subset FizzBuzz of Int where Fizz&Buzz; +my subset Number of Int where none Fizz|Buzz; + +proto sub fizzbuzz ($) { * } +multi sub fizzbuzz (FizzBuzz) { "FuzzBuzz" } +multi sub fizzbuzz (Fizz) { "Fizz" } +multi sub fizzbuzz (Buzz) { "Buzz" } +multi sub fizzbuzz (Number $number) { $number } + +fizzbuzz($_).say for 1..15; +</code></pre> + +</div> +<div class='slide '> +<!-- _S9SLIDE_ --> + +<h2 id="perl6-4">Perl6の処理系の構成</h2> <ul> <li>Perl6の処理系は現在はRakudoと呼ばれる(歴史上複数存在する)</li> @@ -169,6 +194,21 @@ <li>NQPはPerl6の文法をベースにしているが、 制約がいくつか存在する</li> </ul> +<pre><code>#! nqp +sub fib($n) { + $n < 2 ?? $n !! fib($n-1) + fib($n - 2); +} + +my $N := 29; + +my $t0 := nqp::time_n(); +my $z := fib($N); +my $t1 := nqp::time_n(); + +nqp::say("fib($N) = " ~ fib($N)); +nqp::say("time = " ~ ($t1-$t0)); +</code></pre> + </div> <div class='slide '> <!-- _S9SLIDE_ -->