# HG changeset patch # User Yasutaka Higa # Date 1423719805 -32400 # Node ID fc864841ab90d9f1928f74424a5c0a9422d6756c # Parent d0d14c0a795bd7adfbf38206914f1d3407a15ec7 Update description of definition delta monad in haskell diff -r d0d14c0a795b -r fc864841ab90 appendix.tex --- a/appendix.tex Thu Feb 12 14:34:35 2015 +0900 +++ b/appendix.tex Thu Feb 12 14:43:25 2015 +0900 @@ -3,17 +3,10 @@ % TODO list 指摘分リスト - 研究目的 -> プログラムの変更を形式化する in Functional Programming は chapter に category とかは分かってますよアピールなので 何を書くかのダイジェスト 飛ばしても良い旨 -Delta Monad の merit - 2章に書いて良い - parallel debugger - colimit -Monad の解説 - 序論で入れて良い haskell code module とか :: とかも書く などは使わない diff -r d0d14c0a795b -r fc864841ab90 delta.tex --- a/delta.tex Thu Feb 12 14:34:35 2015 +0900 +++ b/delta.tex Thu Feb 12 14:43:25 2015 +0900 @@ -95,28 +95,29 @@ プログラムを変更する際には、コンストラクタ Delta を用いて記述し、変更後の値と前のバージョンを持つ。 なお、a とは任意の型であり、Delta が任意の型の値に対してもデータ型を構築できることを示す。 -データ型 Delta に対応するメタ計算はリスト\ref{src:delta_instance_monad}のように定義する。 - -\begin{table}[html] - \lstinputlisting[label=src:delta_instance_monad, caption=Haskell におけるデータ型Deltaとメタ計算の関連付け] - {src/delta_instance_monad.hs} -\end{table} - Haskell においてメタ計算とデータ型の対応は Monad によって行なうため、 Monad という型クラスが用意されている。 型クラスとは特定の性質を持つ型をまとめるための制約である。 -ある型が型クラスに属するためには制約として型クラスによって指定された関数を定義する必要がある。 -型クラス Monad に要請される関数は return と \verb/>>=/ であり、型クラスはリスト\ref{src:monad_class}のように定義されている。 +ある型が型クラスに属するためには制約として型クラスによって指定された関数を定義する。 +なお、型aが型クラスCに属することを「型aは型クラスCのインスタンスである」と言う。 +型クラス Monad はリスト\ref{src:monad_class}のように定義されている。 \begin{table}[html] \lstinputlisting[label=src:monad_class, caption=Haskell における Monad 型クラス] {src/monad_class.hs} \end{table} + +型クラス Monad に属するために要請される関数は return と \verb/>>=/ である。 関数 return は任意の型aを受けとり、メタ計算と対応された型に対応させて返す。 \verb/>>=/ は中置関数であり、left operand と right operand を取る。 left operand であるメタ計算と対応された値と、right operand であるメタ計算と対応された値を返す関数を取り、メタ計算を行ないながら関数を適用する。 -型クラスMonad を Delta に適用した結果は以下のようになる。 +データ型 Delta に対応するメタ計算を Monad を用いてリスト\ref{src:delta_instance_monad}のように定義する。 + +\begin{table}[html] + \lstinputlisting[label=src:delta_instance_monad, caption=Haskell におけるデータ型Deltaとメタ計算の関連付け] + {src/delta_instance_monad.hs} +\end{table} \begin{itemize} \item 関数 return