module Qsort (qsort) where
qsort :: (Show a, Ord a)
=> [a]
-> [a]
qsort :: forall a. (Show a, Ord a) => [a] -> [a]
qsort [] = []
qsort (a
x:[a]
xs) = [a] -> [a]
forall a. (Show a, Ord a) => [a] -> [a]
qsort [a]
smaller [a] -> [a] -> [a]
forall a. [a] -> [a] -> [a]
++ [a
x] [a] -> [a] -> [a]
forall a. [a] -> [a] -> [a]
++ [a] -> [a]
forall a. (Show a, Ord a) => [a] -> [a]
qsort [a]
larger
where
smaller :: [a]
smaller = [a
a | a
a <- [a]
xs, a
a a -> a -> Bool
forall a. Ord a => a -> a -> Bool
<= a
x]
larger :: [a]
larger = [a
b | a
b <- [a]
xs, a
b a -> a -> Bool
forall a. Ord a => a -> a -> Bool
> a
x]