我是haskell的新手,我认为我理解ADT和类型类的概念,但我仍然有点困惑 .
我试图创建一个小游戏,然后我开始布局数据结构 .
现在我开始了
data Consumable = Food
| Water
| Potion
data Equipment = Weapon
| Shield
Consumable
和 Equipment
都有关系,两者都是项目,但我不确定如何在haskell中表达这一点 .
我想也许我应该创建一个名为Item的类型
Class Item where
use ::
然后制作消耗品和设备两个物品的实例 . 或者我可以表达它
data Item = OneTimeUseable Consumable
| Equipable Equipment
感觉像haskell比我学到的其他语言更具表现力,我在设计应用程序时遇到了一些麻烦 .
您可以给我的任何提示/指南?
2 回答
你可以坚持工会的想法 .
我会远离制作自己的类型课程 . 这些通常用于有法律的东西,如monad,functor,applicative .
您也可以开始考虑实际上做了什么,并使用具有函数作为成员的数据类型 .
我的经验法则是设计您的程序,就好像类型不存在一样 . 如果你后来遇到一个抽象,它确实需要一个类型类来避免样板,那么继续添加它 .