foldr f (head xs) xs is not the same as foldr1 f xs

Hi! A small example for the claim mentioned in the subject: Prelude> let x = 1:undefined in foldr (curry fst) (head x) x 1 Prelude> let x = 1:undefined in foldr1 (curry fst) x *** Exception: Prelude.undefined Perhaps it would be better to change the implementation of foldr1? Cheers, David

Ah! thanks you're right, sorry. My problem arose from the fact that let x = 'A':undefined in head $ (unwords.words) x does not terminate, but now it's clear: For interspersing the blanks you need to evaluate the tail. Sorry again. Cheers, David Tomasz Zielonka schrieb:
On Sun, May 08, 2005 at 08:14:30PM +0200, David Sabel wrote:
Hi!
Subject: foldr f (head xs) xs is not the same as foldr1 f xs
I think you forgot about tail:
foldr f (head xs) (tail xs)
Best regards Tomasz _______________________________________________ Glasgow-haskell-users mailing list Glasgow-haskell-users@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-users

On Sun, May 08, 2005 at 08:14:30PM +0200, David Sabel wrote:
Hi!
A small example for the claim mentioned in the subject:
Prelude> let x = 1:undefined in foldr (curry fst) (head x) x 1 Prelude> let x = 1:undefined in foldr1 (curry fst) x *** Exception: Prelude.undefined
Perhaps it would be better to change the implementation of foldr1?
Why? *wonders what he's missing* It sounds like a rather silly claim to me. When changed to foldr f (head xs) (tail xs) is not the same as foldr1 f xs ^^^^^^^^^ I would be more interested to see examples... Greetings, Remi -- Nobody can be exactly like me. Even I have trouble doing it.
participants (3)
-
David Sabel
-
Remi Turk
-
Tomasz Zielonka