Haskellのスキルを向上させるために、いくつかのサンプルコードを調べて、別の方法で書き直すことにしました。
初期関数は次のとおりです。
quicksort :: (Ord a) => [a] -> [a]
quicksort [] = []
quicksort (x:xs) =
let smallerSorted = quicksort [a | a <- xs, a <= x]
biggerSorted = quicksort [a | a <- xs, a > x]
in smallerSorted ++ [x] ++ biggerSorted
移行された関数は次のとおりです。
quicksort :: (Ord a) => [a] -> [a]
quicksort [] = []
quicksort (x:xs) = smallerSorted ++ [x] ++ biggerSorted
where smallerSorted = quicksort [a | a <- xs, a <= x]
biggerSorted = quicksort [a | a <- xs, a > x]
しかし、それが機能していないように私には見えます。何か問題がありますか?LETを使用する関数をWHEREに移植できますか?
これは私のエラー出力です:
/Users/graph/Documents/Uni/Haskell/hey.hs:43:5:
parse error on input `biggerSorted'
Failed, modules loaded: none.
どうもありがとう!