SML运算符和操作数don';不同意错误

SML运算符和操作数don';不同意错误,sml,smlnj,Sml,Smlnj,我正在尝试编写一个类型为的快速排序函数 'a list * ('a * 'a -> bool) -> 'a list 但出于某种原因,我得到: 'a list -> ('a * 'a -> bool) -> 'a list 以下是我的函数代码: fun quicksort xs f = let fun qs [] = [] | qs [x] = [x] | qs (p::xs) = let val (less, more)

我正在尝试编写一个类型为的快速排序函数

'a list * ('a * 'a -> bool) -> 'a list
但出于某种原因,我得到:

'a list -> ('a * 'a -> bool) -> 'a list
以下是我的函数代码:

fun quicksort xs f = let
   fun qs [] = []
     | qs [x] = [x]
    | qs (p::xs) = let
        val (less, more) = List.partition (fn x => f (x, p)) xs
        in
          qs less @ p :: qs more
        end
   in
     qs xs
   end
调用该函数时,出现以下错误:

stdIn:73.1-73.18 Error: operator and operand don't agree [tycon mismatch]
  operator domain: 'Z list
  operand:         int list * (int * int -> bool)
  in expression:
    quicksort (L, op <)
stdIn:73.1-73.18错误:运算符和操作数不一致[tycon不匹配]
操作员域:'Z列表
操作数:int list*(int*int->bool)
在表达上:

快速排序(L,op您可以进行简单更改:

fun quicksort xs f = let 
致:


因为您希望快速排序以元组(xs,f)作为参数。

引发此错误:错误:运算符和操作数不一致[circularity]很高兴这有帮助!!
fun quicksort (xs,f) = let