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