changeset 116:731e1c8f250b

update
author anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
date Tue, 19 Feb 2019 21:54:03 +0900
parents 8e8eff729042
children 9df7e99782e8
files paper/chapter2.tex paper/chapter3.tex paper/main.pdf
diffstat 3 files changed, 20 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/paper/chapter2.tex	Tue Feb 19 21:31:13 2019 +0900
+++ b/paper/chapter2.tex	Tue Feb 19 21:54:03 2019 +0900
@@ -71,6 +71,20 @@
 
 \lstinputlisting[frame=lrbt, label=cbc_fact, caption=階乗を求めるCbCのサンプルコード]{./codes/fact.c}
 
+ソースコード\ref{cbc_fact}では、 コマンドライン引数として与えられた数値をinitalizeというCodeGearでint型整数に変換している。
+initalizeはfactに軽量継続し、 factでは与えられた数である変数curが0を上回る数値の間、 第2引数resultに変数curを乗算する。
+その後curをデクリメントし、 自分自身の軽量継続を繰り返している。
+curの値が0となった場合、 最後の1まで乗算したことになるので、printルーチンへと移動する。
+このコードにおける、CodeGearの状態遷移を図\ref{fig:cbc_fact}に示す。
+
+\begin{figure}[ht]
+\caption{ソースコード\ref{cbc_fact}におけるCodeGearの状態遷移}
+ \begin{center}
+  \includegraphics[width=80mm]{./fig/loop_cbc.pdf}
+ \end{center}
+ \label{fig:cbc_fact}
+\end{figure}
+
 
 \section{Cとの互換性}
 
--- a/paper/chapter3.tex	Tue Feb 19 21:31:13 2019 +0900
+++ b/paper/chapter3.tex	Tue Feb 19 21:54:03 2019 +0900
@@ -22,6 +22,12 @@
 \lstinputlisting[frame=lrbt, label=p6_fizzbuzz, caption=Perl6の型システムを利用したfizzbuzz]{./codes/fizzbuzz.p6}
 
 
+ソースコード\ref{perl6_grammer}では、grammarを利用し、 URIの様なスラッシュ区切りの文字列に対するパーサーを定義している。
+このサンプルコードでは、 入力した文字列の最初のスラッシュの間に囲まれた文字列が、連想配列mにキーsubjectで登録される。
+
+ソースコード\ref{p6_fizzbuzz}ではPerl6の型を利用し、3で割り切れるFizz型、 5で割り切れるBuzz型、 15の倍数で割り切れるFizzBuzz型、 それ以外の数を対象とするOtherNumber型を定義している。
+入力でこの型が来た場合、 FizzBuzzのルールで文字列を適切に返す関数を定義しており、 この関数を実行している。
+
 Perl6は言語的な仕様や、 実装がPerl5と大幅に異なっており、 言語的な互換性が存在しない。
 その為、 現在ではPerl5とPerl6は別言語として開発されており、 Perl6は主要な処理系であるRakudoから名前を取り、 Rakuという別名がついている。
 
Binary file paper/main.pdf has changed