Впервые я столкнулся с бесконечным циклом в программе Haskell, которую я пишу. Я сузил его до совершенно определенного раздела кода, но я не могу точно определить, где у меня есть неконкурентное рекурсивное определение. Я смутно знаком с: trace и: history в GHCi, но проблема в том, что некоторые ветки моего кода содержат довольно много рекурсивных модификаций Data.Map.Map
в том смысле, что отображение x
получается посредством adjust
что-то на карте x'
на основе значений на другой карте в зависимости от x'
. Специфика здесь не имеет значения, но, как вы, вероятно, можете сказать, если это происходит в переплетенном рекурсивном режиме, моя история вызовов полностью увязнет во всех различных сравнениях, связанных с картами lookup
s, adjust
ments и insert
ионы.
Может ли кто-нибудь рекомендовать более эффективный способ нахождения бесконечных циклов? Например, это поможет значительно ограничить историю вызовов вызовами из одного исходного файла.