1. ホーム
  2. haskell

[解決済み】Haskellでの挿入ソート

2022-02-21 13:49:58

質問

Haskellの演習をやっています。最初に、私は関数 insert :: Int -> [Int] -> [Int] そのため insert x xs は x をリスト xs に挿入します。 よりも前の要素で、かつ、その要素より小さいか等しい。 に続く。

insert :: Int -> [Int] -> [Int]
insert x [] = [x]
insert x (y:ys) = if x < y 
                 then x:y:ys 
         else y : insert x ys

ここで 挿入 を定義するために、関数 insertionSort :: [Int] -> [Int] . 以下は私の試みです。

insertionSort :: [Int] -> [Int]
insertionSort [x] = [x]
insertionSort (x:xs) = insert x insertionSort xs

エラーです。期待された型[Int]と実際の型[Int]をマッチングできませんでした -> [Int]

どなたか、これを解決する方法をご存じですか?どんな洞察でも大いに結構です、ありがとうございます。

解決方法は?

insert x insertionSort xs

を呼び出しています。 insert を3つの引数( x , insertionSort , xs ). おそらく、次のようにしたいのでしょう。

insert x (insertionSort xs)