我正在尝试检查haskell应用程序中的相等性,它接受类型为[a]的xs,如下所示:
myCompare :: Int -> Int -> [a] -> Int
myCompare pointer x xs = if pointer < length xs
then if xs !! pointer == xs !! (pointer+1)
....
Run Code Online (Sandbox Code Playgroud)
但是,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
Run Code Online (Sandbox Code Playgroud)
我不熟悉各种类型,我不确定我怎么能投这个 - 有人能帮我借这个吗?
比方说,我想构建一个三元组,从三元组中获取1..100的每个数字组合; 即:
[(0,0,0),(0,0,1),(0,1,1),(1,1,1),(0,0,2),(0,1,2),(0,2,2),(1,2,2)]
Run Code Online (Sandbox Code Playgroud)
..等等,直到一个给定的界限(即:100:给我们最终的三连胜(100,100,100)); 在haskell中是否有任何合理的方法可以做到这一点,或者我最好编写一个简短地保存边界指针的方法,并递归地增加每个数字,直到它等于右边的数字?