suchbaum (x : xs) = let ( low, high ) = partition ( < x ) xs in Node { key = x , left = suchbaum low , right = suchbaum high } inorder ( Node { } ) = inorder (left t) ++ [ key t ] ++ inorder (right t) sort (x : xs) = inorder (suchbaum (x : xs)) = let ( low, high ) = partition ( < x ) xs in inorder (suchbaum low) ++ [ x ] ++ inorder (suchbaum high) sort (x : xs) = let ( low, high ) = partition ( < x ) xs in sort low ++ [ x ] ++ sort high