20 Mar
2008
20 Mar
'08
11:21 p.m.
On 3/20/08, John Meacham
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.
Why isn't that recognized as a loop? Isn't it typically beneficial in the body of a function to replace calls like that with the return value? For example: fix :: (a -> a) -> a fix f = f (fix f)