Maximum value in a list
Hamilton Richards
hrichrds@swbell.net
Sun, 4 May 2003 21:56:21 -0500
At 2:30 PM +1200 5/5/03, sashan wrote:
>Hi
>
>I was reading through the tutorial Yet Another Haskell Tutorial and
>doing chapter 3 ex 5, write a function using foldr and max to return
>the maximum value in a list.
>
>I came up with the following that will work for positive numbers.
>
>maxInList :: [Int]->Int
>maxInList [] = 0
>maxInList l = foldr max 0 l
>
>Is there an identity for the max function? Because currently if the
>list [-1,-3,-4] is passed to maxInList it will return 0.
>
>_______________________________________________
>Haskell-Cafe mailing list
>Haskell-Cafe@haskell.org
>http://www.haskell.org/mailman/listinfo/haskell-cafe
No, max has no identity, and so maxInList has no correct definition
for an empty list. The shortest lists for which it is defined are
lists of one element.
The Standard Prelude contains a close relative of foldr called
foldr1. It's defined for just this situation.
--HR
--
------------------------------------------------------------------
Hamilton Richards Department of Computer Sciences
Senior Lecturer The University of Texas at Austin
512-471-9525 1 University Station C0500
Taylor Hall 5.138 Austin, Texas 78712-1188
ham@cs.utexas.edu hrichrds@swbell.net
------------------------------------------------------------------