
Hi, Jeremy. Probably I didn't read your message carefully enough. Sorry for that. In my case there's no recursive code sqrt calls nroot that calls Prelude.nroot and Prelude./. Does that qualify? pavel
On 25.01.2011, at 22:35, Jeremy Shaw wrote:
There is a weird type-checking bug in 7.0.1 that causes loopy behavior:
http://hackage.haskell.org/trac/ghc/ticket/4809
Not sure if that is what is happening to you or not. Though in my experience it did not actually print <<loop>>, it just hung.
My understanding of the bug is that the type-checker failed to properly detect and handle super classes in recursive dictionaries. As a result the dictionaries call each other in a loop and nothing ever happens.. You mentioned that the 'let' trick sometimes fixed things. In the code I had trouble with, subtle changes would make the code magically start working. For example, changing *unused* functions in 'where' clauses would cause code to suddenly start working :)
Anyway, since you are certain your issue is not related, you can just ignore my message.
- jeremy
On Jan 25, 2011, at 1:43 PM, Pavel Perikov wrote:
It is NOT type checking bug. It causes Rec {} in core and _|_ in runtime :)