Mercurial > hg > Papers > 2015 > atton-thesis
diff delta.tex @ 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 | |
children | c4da3e667aad |
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 を用いたプログラムの変更の記述}