diff final_main/chapter2.tex @ 6:5b368e14bb64

update
author mir3636
date Tue, 14 Feb 2017 18:48:26 +0900
parents 6d00f6c9bb8a
children
line wrap: on
line diff
--- a/final_main/chapter2.tex	Mon Feb 13 20:29:46 2017 +0900
+++ b/final_main/chapter2.tex	Tue Feb 14 18:48:26 2017 +0900
@@ -1,7 +1,8 @@
 \chapter{Continuation based C (CbC)}
 \section{Continuation based C (CbC)}
 CbC は 処理を Code Gear とした単位を用いて記述するプログラミング言語である。
-Code Gear から次の Code Gear へと goto による継続で遷移をし処理を行う。
+Code Gear は入力と出力を持ち、CbC では引数が入出力となっている。
+Code Gear から次の Code Gear へと goto による継続で遷移で処理を行い、引数として出力を与える。
 図\ref{fig:cs}は Code Gear 間の処理の流れを表している。
 
 \begin{figure}[htpb]
@@ -16,9 +17,12 @@
 Code Gear は CbC における最も基本的な処理単位である。
 リスト \ref{code_simple} は最も基本的な CbC のコードの一例で、図 \ref{fig:code_simple}はそれを図示したものである。
 CbC では Code Gear は \_\_code という型を持つ関数の構文で定義される。
+ただし、これは \_\_code 型の戻り値を返すという意味ではなく、Code Gear であることを示すフラグのようなものである。
+
 Code Gear は戻り値を持たないので、関数とは異なり return 文は存在しない。
 goto の後に Code Gear 名と引数を並べて、次の Code Gear の遷移を記述する。
-この goto の行き先を継続と呼ぶ。
+リスト \ref{code_simple} の goto cs1(a+b); などがこれにたる。
+この goto の行き先を継続と呼び、このときの a+b が次の Code Gear への出力となる。
 Scheme の継続と異なり CbC には呼び出し元の環境がないので、この継続は単なる行き先である。
 したがってこれを軽量継続と呼ぶこともある。
 軽量継続により、並列化、ループ制御、関数コールとスタックの操作を意識した最適化がソースコードレベルで行えるようにする。
@@ -77,6 +81,14 @@
 }
 \end{lstlisting}
 
+\begin{figure}[htpb]
+ \begin{center}
+  \scalebox{0.55}{\includegraphics{fig/factorial.pdf}}
+ \end{center}
+ \caption{階乗を求める CbC プログラムの軽量継続図}
+ \label{fig:factorial}
+\end{figure}
+
 \section{環境付き継続}
 環境付き継続は C との互換性のために必要な機能である。
 CbC と C の記述を交える際、CbC の Code Gear から C の関数の呼び出しは問題なく行える。