diff paper/chapter3.tex @ 65:d15c924e9089

fix
author Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
date Wed, 12 Feb 2014 21:08:01 +0900
parents 13535fc08357
children
line wrap: on
line diff
--- a/paper/chapter3.tex	Wed Feb 12 20:00:15 2014 +0900
+++ b/paper/chapter3.tex	Wed Feb 12 21:08:01 2014 +0900
@@ -17,7 +17,6 @@
 \subsubsection{Jungle が持つデータ型}
 非破壊的木構造データベース Jungle が持つのデータ型を表\ref{tab:components}に表す. 
 
-
 \begin{table}[htbp]
 \begin{center}
 \begin{tabular}{|c|c|c|} \hline
@@ -31,6 +30,8 @@
 \caption{Jungle が持つデータ型}
 \end{table}
 
+TVar というのは, Transactional variablesの略で, STM で管理する変数に対して利用する. 
+
 木構造の集まりを表現する Jungle, 単体の木構造を表現する Tree がある. 
 Node は子と属性を任意の数持てる. 
 データ型として定義することで, 内部の型の整合性が保たれる.
@@ -94,7 +95,6 @@
 
 木と木の名前の Map は Haskell のソフトウェア・トランザクショナル・メモリ (STM) を利用して状態を持たせ, スレッド間で共有できるようにしてある. 
 これは, 各スレッドから木構造を新たに作成できるようにするためである. 
-Jungle のデータ構造の Map の前に付いている TVar というのは, Transactional variablesの略で, STM で管理する変数に対して利用する. 
 
 \subsubsection{Jungle と木の作成}
 Jungle は, 複数の非破壊的木構造を持つため, Map で木を管理している(図\ref{fig:jungle}). 
@@ -124,16 +124,6 @@
 createJungleは, 新たにSTMの変数を作成する newTVar を実行する. 
 newTVar などの STM の操作は STM モナド内で行う. 
 最後にatomicallyを行うことで, do 構文内がトランザクションとして実行される. 
-STMの関数が持つ型をソースコード\ref{src:stm}に示す.
-
-\newpage
-\begin{lstlisting}[label=src:stm, caption=STMの関数]
-newTVar :: a -> STM (TVar a)
-readTVar :: TVar a -> STM a
-writeTVar :: TVar a -> a -> STM ()
-
-atomically :: STM a -> IO a
-\end{lstlisting}
 
 ソースコード\ref{src:createJungle}の atomically の隣にある \$ は関数適用演算子である. 
 \$ 関数は最も低い優先順位を持っており, 右結合である. 
@@ -388,9 +378,9 @@
 
 \subsubsection{木の参照}
 木の参照にも参照対象となる木構造の Node を用いる. 
-参照関数の定義をソースコード\ref{src:reffunc}に示す.
+木構造の参照関数の定義をソースコード\ref{src:reffunc}に示す.
 
-\begin{lstlisting}[label=src:reffunc, caption=参照関数]
+\begin{lstlisting}[label=src:reffunc, caption=木構造の参照関数]
 getNode :: Node -> Path -> Node
 getNode node []     = node
 getNode node (x:xs) = getNode child xs
@@ -436,12 +426,12 @@
     pos = size map
 \end{lstlisting}
 
-参照関数の基本的な流れは, getNode関数を使って参照したいPathのノードを取ってくることである.
+木構造の参照関数の基本的な流れは, getNode関数を使って参照したいPathのノードを取ってくることである.
 そのノードにはwhereキーワードを利用して, targetという名前をつけている.
 targetに対して, 子のMapや属性のMapを取得した後, lookup関数などを適用する.
 elems, assocs, sizeなどはData.Mapの参照関数で, Jungle ではその関数をそのまま利用している.
 
-参照関数の基本的な機能をまとめて説明する.
+木構造の参照関数の基本的な機能をまとめて説明する.
 
 \paragraph*{getAttributes}
 対象の Path に存在する属性を Key を用いて参照できる.