我很难为我的数据类型创建自己的实例.我定义了一个类型:
data Breakfast = Egg | Sausage Int | Bread Breakfast deriving (Eq, Show)
并希望它是Ord类的一个实例.我想通过一些规则来比较它:一个鸡蛋和2个香肠等一样好.
我试过这样的:
instance Ord a => Ord (Breakfast) where
compare (Egg) (Sausage 2) = EQ
...
Run Code Online (Sandbox Code Playgroud)
但我得到错误:变量a比实例头更频繁地发生.我尝试了另一个例子,这很好用:
data Down a = Down a deriving (Eq, Show, Read)
instance Ord a => Ord (Down a) where
compare (Down x) (Down y) = y `compare` x
Run Code Online (Sandbox Code Playgroud)
希望你们能帮助我什么是错的.我对Haskell很新.谢谢
只需删除实例定义上的约束:
instance Ord Breakfast where
compare (Egg) (Sausage 2) = EQ
...
Run Code Online (Sandbox Code Playgroud)
您a对右侧未使用的类型变量(实例头)有约束.
| 归档时间: |
|
| 查看次数: |
190 次 |
| 最近记录: |