関数型プログラミング言語Haskell Part7
■ このスレッドは過去ログ倉庫に格納されています
0345デフォルトの名無しさん
2007/05/22(火) 08:10:42実際「役に立つ概念」ってのはそう多くなくて,自然に定義する限り
まともな概念はだいたいモナドになってくれるはず.
(ならないものはだいたい使い物にならない概念だと思う)
332 の流れに沿って IO の文字表示の部分を解釈すると:
1. まず「画面に何か表示する計算」を定義したいと思いつく.
2. 画面の状態を表す型を W で表すことにすると,函手は
T X = (X, W),T f = (f, id) とするとよさそうな気がする.
3. 画面に何か表示する関数 f : X -> T X があったとき,
その持ち上げ f*: T X -> T X は
f* (x,u) = (y, w)
where (y,v) = f x, w = (u と v を合成した状態)
が自然な気がする.
4. 型 X の T X への読み替え j : X -> T X は
j x = (x, w) where w = (何も表示されていない状態)
が自然な気がする.
5. 上で定義した三つ組み (T, j, *) はモナドになっている.
■ このスレッドは過去ログ倉庫に格納されています