# HG changeset patch # User anatofuz # Date 1550580843 -32400 # Node ID 731e1c8f250bbaf4125b18c5f3a0e5344240a6ce # Parent 8e8eff729042411dc990e6c1027c9ab633472016 update diff -r 8e8eff729042 -r 731e1c8f250b paper/chapter2.tex --- 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との互換性} diff -r 8e8eff729042 -r 731e1c8f250b paper/chapter3.tex --- 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という別名がついている。 diff -r 8e8eff729042 -r 731e1c8f250b paper/main.pdf Binary file paper/main.pdf has changed