#7168: Loop -----------------------------------------+---------------------------------- Reporter: bas | Owner: Type: bug | Status: new Priority: normal | Component: Compiler Version: 7.4.1 | Keywords: Lazy evaluation, Loop, Eagerness Os: Unknown/Multiple | Architecture: x86 Failure: Incorrect result at runtime | Testcase: Blockedby: | Blocking: Related: | -----------------------------------------+---------------------------------- When patternmatching on (a,b), the variables a and b are sometimes evaluated eagerly, though they should not be. To see where this occurs, please try to evaluate f :
{{{ f = (1,error "this will not be evaluated!") .++. carefully f (a,b) .++. (c,d) = (a+c,0) carefully (a,b) = (1, a + b) }}} Note that the expected result here is (2,0). My workaround: the program works correctly if the last line is replaced by: {{{ carefully x = (1, fst x + snd x) }}} -- Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/7168> GHC <http://www.haskell.org/ghc/> The Glasgow Haskell Compiler _______________________________________________ Glasgow-haskell-bugs mailing list Glasgow-haskell-bugs@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs