1

私は Haskell の初心者で、非常に奇妙な間違いを犯しました。

insertion el [] = [el]
insertion el (x:xs) = | el < x = el:x:xs
                      | otherwise = x:insertion el xs

これにより、パイプの直後の文字の 2 行目に、このエラーが表示されます: 入力 `|' の解析エラー 失敗しました。モジュールがロードされました: なし。

よくわからないのですが、ヒントをいただけませんか?前もって感謝します :)

4

1 に答える 1

5

関数定義でガード (パイプ記号) を使用する場合、関数名とパラメーターの後に等号を付けません。次のように記述します。

insertion el [] = [el]
insertion el (x:xs)
   | el < x    = el:x:xs
   | otherwise = x:insertion el xs

最初のガードは次の行にある必要はありませんが、それが一般的なスタイルになる傾向があります。

于 2013-03-16T19:45:54.587 に答える