20 Mar
2008
20 Mar
'08
5:39 p.m.
On Thu, Mar 20, 2008 at 06:13:48PM +0100, Lemmih wrote:
x :: IO () -- This type signature works fine, <<loop>> is printed x :: a -- This type signature blows the stack of jhc x = x main = x
Is this a known bug?
Well, it's not really a bug as all detection of loops is a bonus, if the optimizer comes across something of exactly 'x = x' it will replace it with error "<<loop>>" but not all loops optimize to that form. x :: forall a . a x = x turns into x :: (a::*) -> a x a = x a in core, so it is not recognized as a loop. I doubt it will be much of a problem in practice, and eta reduction is an anti-optimization in general. John -- John Meacham - ⑆repetae.net⑆john⑈