
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
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?
import Data.List init sort xs or import Data.List delete (maximum xs) xs -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iEYEARECAAYFAkv6fqcACgkQKUpCd+bV+ko55wCbB/AVbb9OhfGK5ObsAc4yxVFH YigAnjudQlhBThF2IvUOjXFknAxBHUnN =XuKY -----END PGP SIGNATURE-----