die Werte der Typvariablen (= Argumente für Typschablonen) müssen gewisse Bedingungen erfüllen (gewisse Schnittstellen implementieren):
interface Comparable<T> { public int compareTo(T o); } interface SortedSet<T extends Comparable<T>>;
Haskell:
qsort :: Ord a => [a] -> [a] qsort [] = [] qsort (x : xs) = let (lo, hi) = partition (< x) xs in qsort lo ++ [x] ++ qsort hi