
24 May
2010
24 May
'10
8:42 a.m.
Hi, I want to remove the biggest element from a list: withoutBiggest (x:xs) = withoutBiggestImpl (biggest x xs) [] (x:xs) where biggest :: (Ord a) => a -> [a] -> a biggest big [] = big biggest big (x:xs) = if x > big then biggest x xs else biggest big xs withoutBiggestImpl :: (Eq a) => a -> [a] -> [a] -> [a] withoutBiggestImpl big before (x:xs) = if big == x then before ++ xs else withoutBiggestImpl big (before ++ [x]) xs Works, but I am a little concerned that this is slower than needed, because the list has to be iterated twice. Can this be done faster? Regards, Nathan