I'm transitioning from an imperative development environment and could use
some guidance.  I understand in MIT Scheme how to place a break points,
trace entry/exits and examine the environment.

Is it possible to single step through the evaluation of subproblems?

So far, I've discovered placing a break point on function entry and exit
can be accomplished.  (debug) entered.  However using u/d b/f I'm already
at the newest subproblem and this is the function where I set the break.
Can it be evaluated further?  Is it possible to watch certain arguments and
break on a condition?

Thanks!

(pp f)
(named-lambda (f l c)
  (let ((a 1))
    (if (null? l)
        c
        (f (cdr l) (+ c 1)))))

(f '(1 2 3) 0)
[Entering #[compound-procedure 19 f]
    Args: (1 2 3)
          0]
;Breakpoint on entry
;To continue, call RESTART with an option number:
; (RESTART 4) => Continue from breakpoint.
; (RESTART 3) => Continue with advised procedure.
; (RESTART 2) => Return a value from the advised procedure.
; (RESTART 1) => Return to read-eval-print level 1.

(debug)
There are 14 subproblems on the stack.

Subproblem level: 0 (this is the lowest subproblem level)
Compiled code expression (from stack):
    (let ((value ###))
      (repl-history/record! (%record-ref (cmdl/state repl) 5) value)
      value)
 subproblem being executed (marked by ###):
    (hook/repl-eval s-expression environment repl)
Environment created by the procedure: %REPL-EVAL

 applied to: ((f (quote (1 2 3)) 0) #[environment 17] #[cmdl 18])
There is no execution history for this subproblem.

Reply via email to