Попробуйте Шляпа - Haskell Tracer . Я просто попробовал это на простой программе, и это довольно круто. Я не на Windows, хотя, и я не знаю, насколько сложно было бы запустить его. Скорее всего, это довольно сложно, и это позор, потому что это круто и по сути то, что вы хотите. Если вы его запустите, вы можете получить что-то вроде этой информации из Hat:
main = {IO}
teneven = [2,4,6,8,10]
_foldr (\..) [1,2,3,4,5,6,7,8, ...] [] = [2,4,6,8,10]
(\..) 1 [2,4,6,8,10] = [2,4,6,8,10]
(\..) 2 [4,6,8,10] = [2,4,6,8,10]
(\..) 3 [4,6,8,10] = [4,6,8,10]
(\..) 4 [6,8,10] = [4,6,8,10]
(\..) 5 [6,8,10] = [6,8,10]
(\..) 6 [8,10] = [6,8,10]
(\..) 7 [8,10] = [8,10]
(\..) 8 [10] = [8,10]
(\..) 9 [10] = [10]
(\..) 10 [] = [10]
Лямбда есть even
. Кроме того, если вы хотите, Hat может отслеживать вызовы foldr
и другие внутренние вызовы; по умолчанию этого не происходит.