0

だから、私はすでに2つのリストを最小から最大の順に取り、それらが両方ともソートされるようにマージする関数に取り組んでいます。私の考えでは、2 番目のリストを先頭と末尾に分割し、insert を使用して先頭を最初のリストに並べ替え、関数を再度実行しました。ただし、実行すると次のようになります。

Couldn't match expected type `[t0]' with actual type `[a0] -> [a0]'
    In the return type of a call of `List.insert'
    Probable cause: `List.insert' is applied to too few arguments

これをどのように解決すべきかについて少し混乱しています。コードは次のとおりです。

combsort((x:xs):(y:ys)) = combsort(List.insert(y (x:xs)) : ys)
combsort((x:xs):[]) = []
4

1 に答える 1

1

かっこのセットが多すぎます。

combsort((x:xs):(y:ys)) = combsort(List.insert(y (x:xs)) : ys)

する必要があります

combsort ((x:xs):(y:ys)) = combsort (List.insert y (x:xs) : ys)

関数の適用には括弧が必要ないことに注意してください。

オリジナルでは、のように listに適用した結果に適用されるList.insert(y (x:xs))と解析されますList.inserty(x:xs)

List.insert foo
  where
    foo = y (x:xs)
于 2012-10-08T21:26:13.823 に答える