我试图自学Haskell,所以我一直试图以另一种方式重写代码片段。我在在线教程中找到了这种排序算法,并试图看看是否有更好的方法来编写它。
这是我写的
quickerSort :: (Ord a) => [a] -> [a]
quickerSort [] = []
quickerSort (x:xs) = smallList ++ [x] ++ bigList
where let smallList = quickerSort [a | a<-xs, a <= x]
bigList = quickerSort [a | a<-xs, a > x]
这就是我试图以自己的方式重写的内容。
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
解释器会解析错误(可能是错误的缩进或括号不匹配),&#34;但我尝试了不同的间距,但没有用。我只是想知道我是否只是错误地编写了这个函数。
如果它确实是间距错误,那么有人可以链接教授正确的haskell间距的教程吗?
谢谢!
答案 0 :(得分:3)
where let
语法无效;只需在那里写where
。