changeset 6:3b861ecdec9b

Add description meta computation
author Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
date Sat, 07 Feb 2015 11:18:37 +0900
parents bafd7d4af924
children ff369fd176ff
files delta.tex main.tex
diffstat 2 files changed, 39 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/delta.tex	Sat Feb 07 11:18:37 2015 +0900
@@ -0,0 +1,38 @@
+\chapter{プログラムの変更を表現する Delta Monad}
+
+本研究では Monad によりプログラムの変更を定義する。
+
+そのためにまずはプログラムを定義する。
+プログラムは型付けされた値と、値を値へと写像する関数のみで構成されるものとする。
+プログラムの実行は関数の値への適用とする。
+入出力といった、値や関数で表現できない計算はメタ計算とする。
+メタ計算をある性質を持つデータ構造に対応させ、メタ計算が必要な関数は値をデータ構造へと写像することで入出力としった処理を実現する。
+メタ計算とデータ構造の対応に用いる性質が Monad である。
+
+プログラムの変更とは関数や値が変更されることであり、変更される量には単位があるとする。
+最初の変更単位をバージョン1とし、変更された後のプログラムはバージョンが1増加する。
+
+ここで、プログラムが変更される際に過去のバージョンのプログラムも保存するメタ計算を提案する。
+全ての変更単位で変更されたプログラムを保存し、それらを比較することでプログラムの変更を表現しようと考えた。
+このメタ計算を表す Monad を Delta Monad と呼ぶ。
+
+\section{Delta Monad の定義}
+
+任意の型Aに対するメタ計算Tを考えた時、プログラムの変更は\ref{meta_computation_definition}のように定義される。
+
+\begin{equation}
+    T A = V A
+    \label{meta_computation_definition}
+\end{equation}
+
+V はプログラムの全てバージョンの集合であり、V AとすることでAに対応する値の集合を返すものとする。
+
+\section{Haskell における Delta Monad の実装例}
+
+\ref{meta_computation_definition}のメタ計算をMonadで実現する。
+
+実装例としてプログラミング言語 Haskell を用いる。
+% TODO...
+
+
+\section{Delta を用いたプログラムの変更の記述}
--- a/main.tex	Fri Feb 06 15:41:54 2015 +0900
+++ b/main.tex	Sat Feb 07 11:18:37 2015 +0900
@@ -37,11 +37,7 @@
 \listoftables       % 表目次
 
 \input{introduction}
-
-\chapter{プログラムの変更を表現する Delta Monad}
-\section{Delta の定義}
-\section{Haskell における Delta Monad の実装例}
-\section{Delta を用いたプログラムの変更の記述}
+\input{delta}
 
 \chapter{Categorical Definitions of Monad}
 \section{Category}