[Haskell-cafe] GHC bug? Let with guards loops
Andreas Abel
andreas.abel at ifi.lmu.de
Tue Jul 9 16:42:00 CEST 2013
Hi, is this a known bug or feature of GHC (7.4.1, 7.6.3)?:
I got a looping behavior in one of my programs and could not explain
why. When I rewrote an irrefutable let with guards to use a case
instead, the loop disappeared. Cut-down:
works = case Just 1 of { Just x | x > 0 -> x }
loops = let Just x | x > 0 = Just 1 in x
works returns 1, loops loops. If x is unused on the rhs, the
non-termination disappears.
works' = let Just x | x > 0 = Just 1 in 42
Is this intended by the Haskell semantics or is this a bug? I would
have assumed that non-recursive let and single-branch case are
interchangeable, but apparently, not...
Cheers,
Andreas
--
Andreas Abel <>< Du bist der geliebte Mensch.
Theoretical Computer Science, University of Munich
Oettingenstr. 67, D-80538 Munich, GERMANY
andreas.abel at ifi.lmu.de
http://www2.tcs.ifi.lmu.de/~abel/
More information about the Haskell-Cafe
mailing list