Отладка неразрешимого преобразователя в GHCi

У меня есть бесконечный цикл где-то в моей программе, что приводит к исключению <<loop>> при нормальном запуске. Используя GHCi, я отследил проблему до преобразователь

f = Constructor1
  (Constructor2 A :
   (_t3::[DataType2]))

Попытка упорядочить преобразователь с помощью seq _t3 () приводит к зависанию GHCi, поэтому, если я правильно понимаю, происходит бесконечный цикл при сведении к нормальной форме Weak Head. Есть ли способ исследовать этот преобразователь, например, чтобы шаг за шагом увидеть шаги сокращения, которые пытаются использовать для его оценки?


person Corey Staten    schedule 05.10.2017    source источник
comment
Есть ли способ сузить проблемную часть и сделать ее достаточно короткой, чтобы разместить ее здесь? Если его нельзя сузить (например, сделав достаточное количество связанных определений тривиальными), то почему?   -  person 9000    schedule 05.10.2017
comment
Я не могу найти способ сузить его; это именно то, что я надеюсь сделать, задав этот вопрос. Это происходит внутри очень большой программы, и ленивая генерация бесконечного цикла, кажется, не происходит нигде рядом с точкой оценки преобразователя. Я хотел бы знать, откуда в моей программе исходит этот преобразователь; например, это вызов определенной известной функции с определенными известными параметрами.   -  person Corey Staten    schedule 05.10.2017
comment
Связанная тема: stackoverflow.com/q/5337419/223424   -  person 9000    schedule 05.10.2017
comment
Я просмотрел эту тему; :history не раскрывает, и запуск программы с профилированием быстро завершается из-за обнаружения цикла, поэтому ничего очевидного не выделяется в качестве местоположения цикла.   -  person Corey Staten    schedule 05.10.2017
comment
Можете ли вы включить трассировку стека при исключении, а затем Ctrl-C во время бесконечного цикла?   -  person Alex R    schedule 08.10.2017
comment
Это не работает; см. здесь: stackoverflow.com/questions/47188857/   -  person Corey Staten    schedule 08.11.2017