gpt4 book ai didi

haskell - 指定一种类型如果已经存在于 Haskell 中的其他类中,则只能存在于一个类中

转载 作者:行者123 更新时间:2023-12-02 00:23:17 25 4
gpt4 key购买 nike

我正在研究一个涉及统一的问题,使用用户定义的类型 Subst a。问题如下:

“定义一个 Unifying 类型类,指定函数 unify::a -> a -> Maybe(Subst a) 必须为此类内的任何类型 a 定义。类型 a 只能出现在统一类(如果它已经在 Eq 和 Substitutable 类中),并且这应该在您的定义中表示。”

到目前为止,这就是我定义可替代和不可替代的方式:

class Substitutable a where
subst :: Subst a -> a -> a

class Unifiable a where
unify :: a -> a -> Maybe (Subst a)

但是,我不确定如何指定类型 a 仅当它已经存在于 Eq 和 Substitutable 类中时才能出现在 Un济类中。

我不是在寻找这个特定问题的答案,但一般来说,如果一种类型已经在其他类中,我将如何指定它只能在一个类中?

谢谢。

最佳答案

类定义可以包含约束,就像函数一样。

class (Eq a, Substitutable a) => Unifiable a where
unify :: a -> a -> Maybe (Subst a)

关于haskell - 指定一种类型如果已经存在于 Haskell 中的其他类中,则只能存在于一个类中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40443235/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com