【发布时间】:2012-02-05 16:11:08
【问题描述】:
我想用haskell来实现一个游戏,并且想用一个类型类的系统来实现物品系统。它会像这样工作:
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
Item 和 Flammable 类是这样的:
class Item a where
image :: a -> String
displayName :: a -> String
class Flammable a where
burn :: (Item b) => a -> b
为此,我需要一种方法来检测值是否是类型类的实例。
Data.Data 模块提供了类似的功能,因此我相信这是可能的。
【问题讨论】:
-
我不确定你在做什么适合 Haskell 类型的模型。值是类型类的实例应该是静态可证明的。
-
值不能是类型类的实例。类型是类型类的实例。