タグ

関連タグで絞り込む (1)

タグの絞り込みを解除

existential-typeに関するnsyeeのブックマーク (2)

  • 何故か書いてしまったduck typing (Haskell,存在型+型クラス) - keigoiの日記

    存在型+型クラスでduck typing. 参照:http://www.haskell.org/haskellwiki/Existential_type 既に言及されてますが、このやり方だとHaskellはnonintrusive-explicit-dynamic に該当しますね。 テーブル修正しました。 class Duck a where quack :: a -> IO () data Dog = Dog data Cat = Cat -- non-instrusive -- -- 犬はアヒルだ instance Duck Dog where quack _ = putStrLn "wuff!" -- もアヒルだ instance Duck Cat where quack _ = putStrLn "meow." data DuckObj = forall a. Duck a =>

    何故か書いてしまったduck typing (Haskell,存在型+型クラス) - keigoiの日記
  • オブジェクトリスト - imHo

    何故か書いてしまったduck typing (Haskell,存在型+型クラス) うおおぉぉ!まさにこれだ! ゲームに出てくるオブジェクトを型をあれこれ構わずリストにぶち込んで更新処理や描画処理をぶん回す、みたいな作り方をよくすると思う。C++とかだったら基底型を作って仮想関数を定義してそれを呼び出しという具合で。でも Haskell だとリストには同一の型しか入れられないのでどうしようかと悩んでたところ。 普通に考えられるのは代数的データ型を使って、すべてをひとつのデータ型にしてしまうやり方: data GameObject = Kuribo | Nokonoko | … Monadius がこういうやり方。けどそれぞれの型による関数の分岐を書くのに問題があって、関数ごとに処理を1ヶ所に書かないといけないのでソースを分けづらい: update Kuribo = あれこれ update N

    オブジェクトリスト - imHo
    nsyee
    nsyee 2008/10/23
    存在型の例
  • 1