spawn/killモデルの実装を作ってみた。worldsパッケージがそれだ(露骨な名前だが赦してほしい)。前の記事と違う点は、Worldがモナド変換子として実装されている点だけである。worlds-exampleは画面内のキャラクターを方向キーで操作する例。tick見ての通り、Player内部の状態には直接関与しない。Playerの実装では、mainから受け取ったメッセージを解釈し、実際の動作と状態遷移に変換する。}これはまさにカプセル化とメッセージパッシングであり、オブジェクト指向の実装であると言える。従来のオブジェクト指向と違う点は、インスタンス、メソッドなどの仕組み全てがファーストクラスであり、カスタマイズすることができることである。メソッドをモナドにするのは、Operationalモナドを使えば高々2行の変更で可能だろう。ゲーム開発などにおいてこのアプローチがどう使えるか、これからも調べていきたい。追記ドッペルゲンガーを作ってみた。インスタンスは霊本体と操作するクローンに分かれている。joinedHaskellはてなブログをはじめよう!fumiexcelさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。