On 8/16/07, ok <[EMAIL PROTECTED]> wrote: > We're going to have to keep track of whether we have a last element > or not. The obvious candidate for this is Maybe x. Initially there > is no element, Nothing. > f x Empty = Just x > f x (Just y) = Just y > This picks up a new value (x) when there wasn't one (Nothing) and > keeps the old last element (Just y) when there was one (Just y). > But this gives us a Maybe x, when we want an x, so we'll have to finish > off with a fromJust. > > last = fromJust . foldr f Nothing > where f _ r@(Just _) = r > f x Nothing = Just x
I had this idea as well, but the questioner said the chapter with the exercise preceded any use of Maybe, although I admit my suggestion of using foldr to compose a processing function is more complicated for a beginner. Here's a way to use the above idea without Maybe: myLast = head . foldr f [] where f x [] = [x] f _ [x] = [x] _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe