Hi Sigbjorn,
Oops! My response to your bug report about looping of read was wrong :-(
I realized that the example you gave is precisely the one in the Haskell
report, and doesn't involve a left associative operator, which is what
triggers the problem that I described. And so I looked closer. It turns
out that Hugs was generating the derived instance of Read before it had
assigned the specified (infix 4) precedence to :^: ... and so it was just
assuming the default (infixl 9) syntax for :^:, which is left associative,
and hence triggers the unwanted looping behavior... Fortunately, the fix
was quite simple ... see the forthcoming release.
So many apologies for my earlier mis-diagnosis of the bug, and thanks for
reporting it!
[The problem with left associative operators remains (define infixl 9 :^:
to reproduce it), and I would still be glad of any suggestions for fixing
that.]
All the best,
Mark