【发布时间】:2016-11-05 21:10:22
【问题描述】:
我正在处理一个涉及统一的问题,使用用户定义的类型 Subst a。问题如下:
"定义一个类型类Unifiable,指定一个函数unify::a -> a -> Maybe (Subst a) 必须为此类内的任何类型 a 定义。类型 a 只能在 Unifiable 类,如果它已经在 Eq 和 Substitutable 类中,这应该 在你的定义中表示出来。”
到目前为止,这就是我定义 Substitutable 和 Unifiable 的方式:
class Substitutable a where
subst :: Subst a -> a -> a
class Unifiable a where
unify :: a -> a -> Maybe (Subst a)
但是,我不确定如何指定类型 a 只能在 Unifiable 类中,前提是它已经在 Eq 和 Substitutable 类中。
我不是在寻找这个特定问题的答案,但总的来说,如果类型已经在其他类中,我将如何指定它只能在一个类中?
谢谢。
【问题讨论】:
标签: haskell instance typeclass unification