I expect
a = trace "a" 1
and then evaluating a repeatedly to show:
"a"
1
as a result. ghci seems to do this, but with larger programs this doesn't appear to happen.
I guess it's an implementation detail in that expressions don't "need" to be evaluated twice, but for debugging purposes it's vital that it does.
I want that the first run of an algorithm produces the same trace as any subsequent one. Especially when one uses the 6.7 debugger this is an issue. Essentially, I need to load another module first and then the module I am interested in and then set the breakpoints again. This is a UI nightmare.
The option +r "revert top-level expressions after each evaluation" seems to indicate that should do what I want, but it doesn't.