bitterharvest’s diary

A Bitter Harvestは小説の題名。作者は豪州のPeter Yeldham。苦闘の末に勝ちえた偏見からの解放は命との引換になったという悲しい物語

Haskellドリル(中級編)

HaskellドリルⅦ IOモナド

1.現実の世界 モナドは二つの演算returnと>>=を有していた。この中の演算(>>=)を連続して用いることにより、同じ型の中で、鎖のように繋がった操作(オペレーション)が可能になった。これを見やすくしたのがdo記法であった。do記法を用いることで逐次型の処…

HaskellドリルⅥ モナドのdo記法

1.モナドの復習 圏論の中でモナドは次のように定義されていた。モナドは関手\(\mathcal{M}:\mathcal{C} \rightarrow \mathcal{C}\)で、\(\mathcal{C}\)内のすべての対象\(X\)に対して、次の二つの射を有する。 1)\(unit_{X}:X \rightarrow \mathcal{M} (…

HaskellドリルⅤ モナドの理論的な背景

1.モナド 圏論の入門書の最後のほうに出現するのがモナドである。そこでは、随伴性という概念を用いてモナドは定義されている。このため、モナドを本当に理解しようとしたら、圏論の基礎的な知識を持たなければならないのだが、ここでは、随伴性という専門…

HaskellドリルⅣ 型クラスとしてのファンクタ

1.圏論 ファンクタという用語は、日本語では関手という。少し奇妙な名前だが、最も抽象的な数学である圏論で用いられる用語で、カテゴリ間の写像を表す時に用いる。ここでは、圏論の話を少しして、Haskellで用いられているファンクタの概念がどのようなも…

HaskellドリルⅢ 型クラスとは

1.型クラスと型 オブジェクト指向でのクラスとインスタンスの概念に馴染むのに時間がかかったように、Haskellでの型クラスと型の概念に馴染むためにも、時間を必要とする。型クラスと型の関係は図で示すと以下のようになっている。 上の図において、青い四…

HaskellドリルⅡ 再帰的なデータ型を作成する

1.名称が猛々しい代数的データ型 代数的データ型の話は、以前の記事で少しふれた。今回は、もう少し詳しく説明する。「すごいHaskell楽しく学ぼう!」でのリストと木構造を用いての論理的な説明が分かりやすいので、ここでも、リストと木構造を用いて説明す…

HaskellドリルⅠ 独自の新しい型を定義しよう

1.新しい型を作成する-data Haskellが用意している基本的な型だけでは、分かりやすいプログラムをかけないことが多い。例えば、図形を描くプログラムを開発しようとするとき、点や線や円、はたまた、三角形や四角形などを型として表したいという欲求が生…