Re: [Haskell] specified or not

[moving to the cafe] On Thu, Mar 03, 2005 at 09:39:17AM -0500, Scott Turner wrote:
Is the behavior of evaluating z unspecified? z = f (0, z) f x = case x of (1,1) -> z _ -> 0 Hugs and GHC agree that z evaluates to 0. However, if the first line is changed to z = f (z,0) then both implementations loop. In other words, the behavior depends on order of evaluation, which AFAIK is not specified.
The order of pattern matching is specified: pre-order, left to right. In detail: according to the rules of Section 3.17.3 of the Report, the definition of f is equivalent to f x = case x of (x1, x2) -> case x1 of 1 -> case x2 of 1 -> z _ -> 0 _ -> 0 _ -> 0 and hence f (0, anything) = 0 f (undefined, 0) = undefined
participants (1)
-
Ross Paterson