重写排序算法。糟糕的代码或只是糟糕的间距

时间:2015-03-18 19:18:00

标签: sorting haskell

我试图自学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间距的教程吗?

谢谢!

1 个答案:

答案 0 :(得分:3)

where let语法无效;只需在那里写where