# HG changeset patch # User Yasutaka Higa # Date 1423275517 -32400 # Node ID 3b861ecdec9b68b9985775d7df38884516bcb596 # Parent bafd7d4af9248db7d87e665c26fe9abe66605d5b Add description meta computation diff -r bafd7d4af924 -r 3b861ecdec9b delta.tex --- /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 を用いたプログラムの変更の記述} diff -r bafd7d4af924 -r 3b861ecdec9b main.tex --- 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}