gpt4 book ai didi

haskell - 比较 Haskell 中的不同类型

转载 作者:行者123 更新时间:2023-12-02 17:03:16 24 4
gpt4 key购买 nike

我正在尝试检查 haskell 应用程序中的相等性,该应用程序接受 [a] 类型的 xs,如下所示:

myCompare :: Int -> Int -> [a] -> Int
myCompare pointer x xs = if pointer < length xs
then if xs !! pointer == xs !! (pointer+1)
....

但是,Haskell 遇到了一个问题,即它无法对 xs 数组中的项目进行比较,因为它们可能具有不同的类型。

返回的错误是:

No instance for (Eq a) arising from a use of ‘==’
Possible fix:
add (Eq a) to the context of
the type signature for myCompare :: Int -> Int -> [a] -> Int

我对类型不熟悉,不确定如何转换它 - 有人可以帮助我吗?

最佳答案

只需执行编译器告诉您的操作即可:向函数添加 Eq 约束。

myCompare :: Eq a => Int -> Int -> [a] -> Int

当你编写a时,你告诉编译器该函数可以操作任何类型;换句话说,这意味着您不对该类型有任何期望。

比较特定类型的两个值不是给定的;它由 Eq 类型类提供。虽然大多数 ADT 可以简单地派生 Eq 来获取该实例,但您仍然需要确保要比较的类型和值实际上具有该实例,这正是约束正在做的事情。

关于haskell - 比较 Haskell 中的不同类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27178893/

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