[Haskell] factoring `if'
Colin Runciman
colin at cs.york.ac.uk
Mon Oct 11 06:30:50 EDT 2004
Serge,
>How do you think, is the program (1) equivalent to (2)
>in the meaning of Haskell-98 ?
>
>(1) (\ x -> (if p x then foo (g x) else foo (h x))
> where
> p ... g ... h ... foo ...
> )
>
>(2) (\ x -> foo ((if p x then g x else h x)
> where
> p ... g ... h ... foo ...
> )
> )
>
>
Both examples are illegal -- there are no where-expressions in Haskell,
only where-equations.
Ignoring the local definition part, however, the answer is no. Lifting
foo out of the branches of the conditional is only valid if foo is strict.
Colin R
More information about the Haskell
mailing list