我想用haskell來實現一個遊戲,並且想使用一個類型類的系統來實現這個item系統。它的工作是這樣的:Haskell Typeclass檢查
data Wood = Wood Int
instance Item Wood where
image a = "wood.png"
displayName a = "Wood"
instance Flammable Wood where
burn (Wood health) | health' <= 0 = Ash
| otherwise = Wood health'
where health' = health - 100
在項目和易燃類是這樣的:
class Item a where
image :: a -> String
displayName :: a -> String
class Flammable a where
burn :: (Item b) => a -> b
要做到這一點,我需要一種方法來檢測值是否是一個實例一個類型類。
Data.Data模塊提供了類似的功能,這使我相信這是可能的。
我不確定你在做什麼符合Haskell類型模型。值是一個類型的實例應該是靜態可證明的。 – millimoose 2012-02-05 16:13:36
值不能是類型類的實例。類型是類型類的實例。 – 2012-02-05 16:23:37
請參見[本FAQ文章](http://www.haskell.org/haskellwiki/FAQ#I.27m_making_an_RPG._Should_I_define_a_type_for_each_kind_of_monster.2C_and_a_type_class_for_them.3F)。 – ehird 2012-02-05 16:35:47