Sorting Haskell比较排序算法
基本上,我想写一个函数,将单个列表作为输入,对该列表应用排序算法列表,然后返回一个布尔值,指示它们是否都生成了排序列表 (Sorting Haskell比较排序算法,sorting,haskell,iteration,Sorting,Haskell,Iteration,基本上,我想写一个函数,将单个列表作为输入,对该列表应用排序算法列表,然后返回一个布尔值,指示它们是否都生成了排序列表 (checksorted是我编写的一个函数,它接受一个列表并返回一个布尔值,指示它是否已排序) 这是我开始使用的代码: sortCheck :: Ord a => [a] -> Bool sortCheck xs = checkSorted(mergeSort xs) && checkSorted(insertionSort xs) &&a
checksorted
是我编写的一个函数,它接受一个列表并返回一个布尔值,指示它是否已排序)
这是我开始使用的代码:
sortCheck :: Ord a => [a] -> Bool
sortCheck xs = checkSorted(mergeSort xs) && checkSorted(insertionSort xs) && checkSorted(qSort xs)
当我试图编译此文件时,会出现某种类型的错误:
无法推断(a~Int)
我如何使用无限列表来实现这一点
编辑:这是我的checksorted算法
checkSorted :: Ord a => [a] -> Bool
checkSorted [] = True
checkSorted [x] = True
checkSorted (x:y:xs) = x <= y && checkSorted (y:xs)
checkSorted::Ord a=>[a]->Bool
checkSorted[]=True
checkSorted[x]=True
checkSorted(x:y:xs)=x至少一个checkSorted
、mergesort
、insertionSort
或qsort
必须采用[Int]
类型才能获得该错误
错误消息告诉您,您指定sortCheck
应适用于任何类型的列表,只要该类型具有Ord
实例,但从正文推断的类型需要Int
列表
~
是类型相等约束。(a~Int)
可以理解为“a
等于Int
”您必须显示检查排序功能。我怀疑它的类型是[Int]->Bool
,而不是[a]->Bool
。排序函数的声明是什么?