我是 Haskell 的初學者,我正在嘗試創建一些小演算法來理解 Haskell 的語法,我正在嘗試撰寫和編譯一個快速排序演算法,但它在編譯時給了我一個錯誤。
quicksort [] = []
quicksort (x:xs) = quicksort small (x : quicksort large)
where small = [y | y <- xs, y <= x]
large = [y | y <- xs, y > x]
有人可以幫助我理解為什么我在代碼的第二行出現此錯誤。
parse error on input ‘=’parser.
謝謝,
我也是這個平臺的新手,所以如果我不夠清楚或者我需要改進我的問題,請在評論中告訴我。
uj5u.com熱心網友回復:
Haskell 中的意圖很重要。我可以重現你的錯誤
quicksort [] = []
quicksort (x:xs) = quicksort small (x : quicksort large)
where small = [y | y <- xs, y <= x]
large = [y | y <- xs, y > x]
.code.tio.hs:2:19: error: parse error on input '=' 也許你需要在'do'塊中使用'let'?
但是當你洗掉第二個之前的空間時quicksort,它編譯得很好。
從技術上講,您可以在使用 和 時使用{任何}意圖;。不建議這樣做,因為您將很難找到需要牙套的確切位置,而且示例很少。(“稀有”如“瀕危物種”/“幾乎滅絕”)
{
quicksort [] = [];
quicksort (x:xs) = quicksort small (x : quicksort large) -- no `;` before `where`
where {small = [y | y <- xs, y <= x];
large = [y | y <- xs, y > x]};
main = print . quicksort $ "hello"
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/474035.html
標籤:哈斯克尔
