That's exactly a better description of what :stepover does at the moment: stop only at breakpoints in the current top level function. I wished for "stop only at the current function", but applications of functions declared in the where clause, as well as recursive calls, are being followed too. Imho this works fairly well for monadic code, which is statement- based and rarely recursive, but pure functional code is another story. If we keep this variant, I would change the name to :steplocal, to avoid misleading.

On the other hand, I have a working fix for recursive calls, but I still need to deal with where clauses. For that, the key is to be able to exactly determine the enclosing expression of a tick, obtaining the span of the current function instead of the current top level function as now. But for this we need the LHsExpr of the module, and I don't think this information is available for GHCi (is it?).
Extending ModBreaks to carry it looks like a viable alternative.
So, if these fixes work as expected, :stepover would have a more uniform behaviour really giving the feeling of stepping over function calls.


On 20/08/2007, at 16:53, Simon Marlow wrote:

Pepe Iborra wrote:
Thanks. It does not work totally well, as right now it can step over function applications _except_ recursive calls. This is not desired, but I haven't figured out how to detect those with the current scheme yet.

Perhaps something simpler: provide a way to stop only at breakpoints in the current function, or module? We'd see when execution jumps back to evaluate lazy expressions in the current function, but maybe that's desirable?

Cheers,
        Simon


_______________________________________________
Cvs-ghc mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/cvs-ghc

Reply via email to