3 Dec 08:57
What causes <<loop>>?
From: Martin Hofmann <martin.hofmann <at> uni-bamberg.de>
Subject: What causes <<loop>>?
Newsgroups: gmane.comp.lang.haskell.cafe
Date: 2008-12-03 07:59:53 GMT
Subject: What causes <<loop>>?
Newsgroups: gmane.comp.lang.haskell.cafe
Date: 2008-12-03 07:59:53 GMT
I've already posted this mail on haskell-cafe, but apparently the subject suggested a too simple question, so I try it here again. I am picking up a discussion with the same topic from haskell-users on 8th November. Thunks with reference on themselves was mentioned as main reason for <<loop>>. > A safe recursive definition would be > let x = Foo (x+1) > However, if you leave out the constructor, > let x = x + 1 > you get a <<loop>> (or a deadlock). > Are there any other reasons? I am trying to debug monadic code which stores state information in a record maintaining several Data.Maps, but in vain so far. A state is modified/changed in several steps by a compound function i.e. changeA $ changeB $ changeC state Could this also lead to a deadlock? If so, can I prevent this using CPS? If the state transformation is the main purpose/computation of the monad at all, is it better to use CPS? Is code using mtl, records or Data.Map more prone to <<loop>> or does this not matter at all. How can I identify self-referencing thunks more easily? Is there any rule of thumb to prevent <<loop>>? Are there any less obvious newbie mistakes causing <<loop> then the one above?(Continue reading)
RSS Feed