[Haskell-cafe] Clean proof -- correction
Per Vognsen
per.vognsen at gmail.com
Sun May 23 12:38:16 EDT 2010
Lennart wasn't pointing out a typo. He was pointing out a fundamental
issue with such identities in a partial call-by-name language. If
h = const 42
then
(h . either (f, g)) undefined
evaluates to 42. But the evaluation of
(either (h . f, h . g)) undefined
is non-terminating.
This is a canonical example of an equation that holds in a partial
call-by-value language but not in a partial call-by-name language:
CBV has more sum equations; CBN has more product equations.
-Per
2010/5/23 R J <rj248842 at hotmail.com>:
> Correction: the theorem is
> h . either (f, g) = either (h . f, h . g)
>
> (Thanks to Lennart for pointing out the typo.)
> ________________________________
> From: rj248842 at hotmail.com
> To: haskell-cafe at haskell.org
> Subject: Clean proof?
> Date: Sun, 23 May 2010 15:41:20 +0000
>
> Given the following definition of "either", from the prelude:
> either :: (a -> c, b -> c) -> Either a b -> c
> either (f, g) (Left x) = f x
> either (f, g) (Right x) = g x
> what's a clean proof that:
> h . either (f, g) = either (h . f, g . h)?
> The only proof I can think of requires the introduction of an anonymous
> function of z, with case analysis on z (Case 1: z = Left x, Case 2: z =
> Right y), but the use of anonymous functions and case analysis is ugly, and
> I'm not sure how to tie up the two cases neatly at the end. For example
> here's the "Left" case:
> h . either (f, g)
> = {definition of "\"}
> \z -> (h . either (f, g)) z
> = {definition of "."}
> \z -> (h (either (f, g) z)
> = {definition of "either" in case z = Left x}
> \z -> (h (f x))
> = {definition of "."}
> \z -> (h . f) x
> = {definition of "."}
> h . f
>
> Thanks.
> ________________________________
> The New Busy is not the too busy. Combine all your e-mail accounts with
> Hotmail. Get busy.
> ________________________________
> The New Busy is not the old busy. Search, chat and e-mail from your inbox.
> Get started.
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>
>
More information about the Haskell-Cafe
mailing list