-- Sortiertes Einfügen in eine Liste mit Hilfe eines Vergleichsprädikates insertby :: (Ord b) => (a -> b) -> a -> [a] -> [a] insertby f x = insert . span test where insert (xs,ys) = xs ++ [x] ++ ys test y = (f y < f x) -- Aufteilen einer Liste in ein Tupel der Teillisten, Trennstelle ist das erste Erfüllen eines Prädikates span :: (a -> Bool) -> [a] -> ([a],[a]) span = (takeWhile p xs, dropWhile p xs)