view future.tex @ 57:5f0e13923cfd

Fixes
author Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
date Mon, 16 Feb 2015 16:24:42 +0900
parents 6ca594d19ca4
children
line wrap: on
line source

\chapter{まとめと今後の課題}
本研究ではプログラムの変更を Monad を用いて形式化した。
特にプログラミング言語 Haskell において Delta Monad としてプログラムの変更を保存するメタ計算を実装した。
変更を保存するメタ計算により、複数のバージョンを持つプログラムを表現でき、複数のバージョンを持つプログラムを同時に実行した。
加えて Delta Monad は DeltaM を用いて Monad と組み合せることができる。
DeltaM を用いたプログラムでは複数のバージョンを持つプログラムがそれぞれどのような過程で実行されたかのトレースを得ることができた。
トレースを比較することにより、デバッグやテストに有用な情報を提供することができる。
さらに Delta と DeltaM が Monad 則を満たすことを Agda において証明した。

今後の課題は大きく分けて2つが挙げられる。
まず1つめはメタ計算のさらなる定義である。
本研究ではプログラムの変更に対応するメタ計算として過去のプログラムを保存するメタ計算を提案した。
そのメタ計算は Delta Monad として実装し、さらにメタ計算を行なう場合は Monad との組み合せとした。
今回例として挙げた Monad は Writer のみであるが、他にも信頼性の向上に用いることができる Monad があると思われる。
例えば変更に制約を加えるメタ計算や、バージョン毎による IO の切り分け、バージョン間の互換性などがあると考えている。
次に、 category theory によるプログラムの変更に対する意味付けがある。
category theory では category の構造から性質を導いたり、他の category への関連を導くことができる。
プログラムの変更を Monad として表した時に持つ意味や、 category が持つ有益な性質をプログラムに適用したい。
特に、複数のプログラムを同時に実行するのは product に、全てのプログラムを生成できる Delta 全体を表す集合は colimit に関連があると考えている。