X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=Data%2FList.hs;h=9082db586a6c279b8e4ed0297548bc9a2770bd42;hb=260e7f2ed9a43c6ecf5a556d77817f39ed2893ab;hp=ce4c9b32f23ebbe886a168baea5a4b6f51035013;hpb=f61a5cd4c1f13a44c212fce464e35d1796fe9110;p=ghc-base.git diff --git a/Data/List.hs b/Data/List.hs index ce4c9b3..9082db5 100644 --- a/Data/List.hs +++ b/Data/List.hs @@ -9,7 +9,7 @@ -- Stability : provisional -- Portability : portable -- --- $Id: List.hs,v 1.1 2001/06/28 14:15:02 simonmar Exp $ +-- $Id: List.hs,v 1.2 2001/12/21 15:07:21 simonmar Exp $ -- -- Operations on lists. -- @@ -317,13 +317,21 @@ insertBy cmp x ys@(y:ys') GT -> y : insertBy cmp x ys' _ -> x : ys -maximumBy :: (a -> a -> a) -> [a] -> a -maximumBy _ [] = error "List.maximumBy: empty list" -maximumBy max xs = foldl1 max xs - -minimumBy :: (a -> a -> a) -> [a] -> a -minimumBy _ [] = error "List.minimumBy: empty list" -minimumBy min xs = foldl1 min xs +maximumBy :: (a -> a -> Ordering) -> [a] -> a +maximumBy _ [] = error "List.maximumBy: empty list" +maximumBy cmp xs = foldl1 max xs + where + max x y = case cmp x y of + GT -> x + _ -> y + +minimumBy :: (a -> a -> Ordering) -> [a] -> a +minimumBy _ [] = error "List.minimumBy: empty list" +minimumBy cmp xs = foldl1 min xs + where + min x y = case cmp x y of + GT -> y + _ -> x genericLength :: (Num i) => [b] -> i genericLength [] = 0