# quicksort in haskell

Here is an implementation of the quicksort algorithm in Haskell:

```
quicksort :: Ord a => [a] -> [a]
quicksort [] = []
quicksort (x:xs) = quicksort [y | y <- xs, y <= x] ++ [x] ++ quicksort [y | y <- xs, y > x]
```

This implementation uses a list comprehension to split the input list into two parts: one containing elements less than or equal to the pivot `x`

, and one containing elements greater than `x`

. It then recursively applies the quicksort algorithm to these two parts and concatenates the results.

To use the `quicksort`

function, simply pass a list of elements as an argument. For example:

```
main :: IO ()
main = do
let unsortedList = [4, 2, 8, 5, 1, 9, 3]
let sortedList = quicksort unsortedList
print sortedList
```

This will output `[1,2,3,4,5,8,9]`

, which is the sorted version of the input list `[4, 2, 8, 5, 1, 9, 3]`

.