两个类型的特殊多态性

时间:2017-03-10 11:10:37

标签: haskell

假设我有两个以

开头的类型类层次结构
class Animal a where ...
class Fruit f where ...

我想定义一个ad hoc多态函数

eat :: (Animal a, Fruit f) => a -> f -> Int

计算动物吃水果时恢复的健康量。 ad hoc,我的意思是我想为几个类型子类的组合编码eat的特化,例如

eat :: (Bird a, Nut f) => a -> f -> Int
eat b n = ...

当我调用eat x y时,我希望编译器针对eatx的类型执行y的最具体的已知实现。如果没有找到这样的类型类组合,那就让它抛出异常。

这可能在Haskell中吗?

0 个答案:

没有答案