gpt4 book ai didi

haskell - Haskell 中的参数化类型和相等性

转载 作者:行者123 更新时间:2023-12-02 20:50:50 26 4
gpt4 key购买 nike

我正在 Haskell 中实现并查找数据结构。

我想使用参数化类型,但当我尝试比较用作参数的对象时,我遇到了一些问题。

data UnionFindElement valueType =
RootElement valueType |
ElementWithParent valueType (UnionFindElement valueType)

holds :: UnionFindElement valueType -> valueType -> Bool
holds (RootElement v) value = v == value

似乎没有定义平等。

No instance for (Eq valueType)
arising from a use of `=='
In the expression: v == value

如何限制 valueType 仅考虑具有定义的相等关系的类型?

最佳答案

holds::(Eq valueType) => UnionFindElement valueType -> valueType -> Bool

(Eq valueType) => 表示 valueType 来自类 Eq (可相等的值),并且该构造的存在正是为了能够限制泛型参数的类型。

请注意,这也适用于数据声明和其他几个地方。您可以了解更多http://en.wikibooks.org/wiki/Haskell/Classes_and_types#Type_constraints

如需更全面的概述,http://en.wikipedia.org/wiki/Type_classhttp://en.wikipedia.org/wiki/Ad-hoc_polymorphism

关于haskell - Haskell 中的参数化类型和相等性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13904883/

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