maximumOn id [] == undefined maximumOn length ["test","extra","a"] == "extra"
minimumOn id [] == undefined minimumOn length ["test","extra","a"] == "a"
>>> import qualified Data.Vector as V >>> V.maximumOn fst $ V.fromList [(2,'a'), (1,'b')] (2,'a') >>> V.maximumOn fst $ V.fromList [(1,'a'), (1,'b')] (1,'a')
>>> import qualified Data.Vector as V >>> V.minimumOn fst $ V.fromList [(2,'a'), (1,'b')] (1,'b') >>> V.minimumOn fst $ V.fromList [(1,'a'), (1,'b')] (1,'a')
>>> maximumOn1 abs (0 :| [2, 1, -3, -2]) -3
>>> minimumOn1 abs (0 :| [2, 1, -3, -2]) 0