A collection of useful functions for sorting and comparing characters, strings, and lists.
Author: Michael Hanus
Version: April 2016
| sort
                  :: Ord a => [a] -> [a]The default sorting operation, mergeSort, with standard ordering <=. | 
| sortBy
                  ::  (a -> a -> Bool) -> [a] -> [a]The default sorting operation: mergeSort | 
| sorted
                  :: Ord a => [a] -> Boolsorted xsis satisfied if the elementsxsare in ascending order. | 
| sortedBy
                  ::  (a -> a -> Bool) -> [a] -> BoolsortedBy leq xsis satisfied if all adjacent elements of the listxssatisfy the ordering predicateleq. | 
| permSort
                  :: Ord a => [a] -> [a]Permutation sort with standard ordering <=. | 
| permSortBy
                  :: Eq a => (a -> a -> Bool) -> [a] -> [a]Permutation sort with ordering as first parameter. | 
| insertionSort
                  :: Ord a => [a] -> [a]Insertion sort with standard ordering <=. | 
| insertionSortBy
                  ::  (a -> a -> Bool) -> [a] -> [a]Insertion sort with ordering as first parameter. | 
| quickSort
                  :: Ord a => [a] -> [a]Quicksort with standard ordering <=. | 
| quickSortBy
                  ::  (a -> a -> Bool) -> [a] -> [a]Quicksort with ordering as first parameter. | 
| mergeSort
                  :: Ord a => [a] -> [a]Bottom-up mergesort with standard ordering <=. | 
| mergeSortBy
                  ::  (a -> a -> Bool) -> [a] -> [a]Bottom-up mergesort with ordering as first parameter. | 
| leqList
                  :: Eq a => (a -> a -> Bool) -> [a] -> [a] -> BoolLess-or-equal on lists. | 
| cmpList
                  ::  (a -> a -> Ordering) -> [a] -> [a] -> OrderingComparison of lists. | 
| leqChar
                  ::  Char -> Char -> BoolLess-or-equal on characters (deprecated, use Prelude.<=). | 
| cmpChar
                  ::  Char -> Char -> OrderingComparison of characters (deprecated, use Prelude.compare). | 
| leqCharIgnoreCase
                  ::  Char -> Char -> BoolLess-or-equal on characters ignoring case considerations. | 
| leqString
                  ::  String -> String -> BoolLess-or-equal on strings (deprecated, use Prelude.<=). | 
| cmpString
                  ::  String -> String -> OrderingComparison of strings (deprecated, use Prelude.compare). | 
| leqStringIgnoreCase
                  ::  String -> String -> BoolLess-or-equal on strings ignoring case considerations. | 
| leqLexGerman
                  ::  String -> String -> BoolLexicographical ordering on German strings. | 
| 
                       
                      The default sorting operation, mergeSort, with standard ordering  
 
 | 
| 
                       The default sorting operation: mergeSort | 
| 
                       
                       | 
| 
                       
                       | 
| 
                       
                      Permutation sort with standard ordering  | 
| 
                       Permutation sort with ordering as first parameter. Sorts a list by finding a sorted permutation of the input. This is not a usable way to sort a list but it can be used as a specification of other sorting algorithms. | 
| 
                       
                      Insertion sort with standard ordering  
 
 | 
| 
                       Insertion sort with ordering as first parameter. The list is sorted by repeated sorted insertion of the elements into the already sorted part of the list. | 
| 
                       
                      Quicksort with standard ordering  
 
 | 
| 
                       Quicksort with ordering as first parameter. The classical quicksort algorithm on lists. | 
| 
                       
                      Bottom-up mergesort with standard ordering  
 
 | 
| 
                       Bottom-up mergesort with ordering as first parameter. | 
| 
                       Less-or-equal on lists. | 
| 
                       Comparison of lists. | 
| 
                       
                      Less-or-equal on characters (deprecated, use  | 
| 
                       
                      Comparison of characters (deprecated, use  | 
| 
                       Less-or-equal on characters ignoring case considerations. | 
| 
                       
                      Less-or-equal on strings (deprecated, use  | 
| 
                       
                      Comparison of strings (deprecated, use  | 
| 
                       Less-or-equal on strings ignoring case considerations. | 
| 
                       Lexicographical ordering on German strings. Thus, upper/lowercase are not distinguished and Umlauts are sorted as vocals. |