# HG changeset patch # User Yasutaka Higa # Date 1423365776 -32400 # Node ID 586f3ce1effe05f9f556ae157d39c69648cc80ea # Parent 9fed7b342d56f3bcbfcb5223a3e3164ca358aca7 Add folding for section diff -r 9fed7b342d56 -r 586f3ce1effe category.tex --- a/category.tex Sun Feb 08 12:20:17 2015 +0900 +++ b/category.tex Sun Feb 08 12:22:56 2015 +0900 @@ -5,6 +5,8 @@ ここで Monad の定義と要請されるMonad則について述べる。 また、定義は Monad の解説に必要な部分についてのみ解説する。 +% {{{ Category + \section{Category} まずは Monad の定義に必要な Category (圏)について述べる。 @@ -87,6 +89,8 @@ commutative diagram が commutative である時、moprhism の合成順序が異なっても結果が同じであることを利用して等価性の証明を行なうことを diagram chasing と呼ぶ。 ある性質を category に mapping し、diagram chasing を用いて証明を導くことで性質を解析していく。 +% }}} + \section{Functor} \section{Natural Transformation} diff -r 9fed7b342d56 -r 586f3ce1effe delta.tex --- a/delta.tex Sun Feb 08 12:20:17 2015 +0900 +++ b/delta.tex Sun Feb 08 12:22:56 2015 +0900 @@ -17,6 +17,8 @@ 全ての変更単位で変更されたプログラムを保存し、それらを比較することでプログラムの変更を表現しようと考えた。 このメタ計算を表す Monad を Delta Monad と呼ぶ。 +% {{{ Delta Monad の定義 + \section{Delta Monad の定義} 任意の型Aに対するメタ計算Tを考えた時、プログラムの変更は式\ref{exp:meta_computation_definition}のように定義される。 @@ -28,7 +30,9 @@ V はプログラムの全てバージョンの集合であり、V AとすることでAに対応する値の集合を返すものとする。 +% }}} +% {{{ Haskell における Delta Monad の実装例 \section{Haskell における Delta Monad の実装例} @@ -88,6 +92,9 @@ なお、中置関数 \verb/>>=/ で用いたコンストラクタによる処理の分岐はパターンマッチと呼ばれる。 Haskell ではコンストラクタごとに関数を記述することでパターンマッチを実現する。 +% }}} + +% {{{ Delta を用いたプログラムの変更の記述例 \section{Delta を用いたプログラムの変更の記述例} プログラムの変更を表現するメタ計算に対応するデータ型 Delta が記述できた。 @@ -154,3 +161,5 @@ \label{fig:delta_example} \end{center} \end{figure} + +% }}}