如何使用"let"关键字在Haskell中定义多个变量

Lyn*_*don 4 haskell let

我在Haskell下面的代码片段中实现了一个快速排序算法.

quicksort :: (Ord a) => [a] -> [a]
quicksort [] = []
quicksort (x:xs) =
let smaller = quicksort [a | a <- xs, a <= x]
    bigger  = quicksort [a | a <- xs, a > x]
in smaller ++ [x] ++ bigger
Run Code Online (Sandbox Code Playgroud)

但它不会被GHCI编译,它告诉第5行有语法错误.但是我已经检查了"let"关键字的Haskell语法,看起来还可以.有没有人可以帮我解决这个问题?非常感谢.

che*_*ner 11

您需要缩进let表达式,因为它是前一行的延续.

quicksort :: (Ord a) => [a] -> [a]
quicksort [] = []
quicksort (x:xs) =
  let smaller = quicksort [a | a <- xs, a <= x]
      bigger  = quicksort [a | a <- xs, a > x]
  in smaller ++ [x] ++ bigger
Run Code Online (Sandbox Code Playgroud)