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:


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 :)