Отладка бесконечных циклов в программах Haskell с помощью GHCi

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

Может ли кто-нибудь порекомендовать более эффективный способ определения местоположения бесконечных циклов? Например, очень помогло бы ограничение истории вызовов вызовами из одного исходного файла.

20
задан gspr 17 March 2011 в 09:52
поделиться