Trace-Output < VITSE < Viivi's Cell < Entrance
Viivi implements the unique Trace-Output function,
which visualizes the evaluation processes of S-expressions in a natural way.
Each trace-output is basically shown as a trace-line
connecting an input S-expression and its evaluation value.
In addition,
the procedure calls and the internal side-effects
(e.g., binding generations and updates,
data-structure modifications, and etc.)
are also shown.
S-expressions not to be evaluated (e.g., the first argument symbol for the calls of define and set!, the symbol for the calls of named-let, the first argument for the calls of lambda, and etc.) are not the targets of the Trace-Output.
In the trace-output,
procedure calls and various side-effects do not occur
at the timings of the ends (input and output) of the trace-lines.
To distinguish them, therefore,
specific marks will be used as follows:
Procedure Call * PROCEDURE
Tail-Recursive Procedure Call / PROCEDURE
(The symbol / is an image of the deeper trace-line joining another shallower trace-line.)
Generation of a New Binding ○ SYMBOL → VALUE
Update of an Existing Binding ● SYMBOL → VALUE
Generation of a New Syntax Binding △ SYMBOL → VALUE
Update of an Existing Syntax Binding ▲ SYMBOL → VALUE
Generation of a New Data Structure □ NEW-DATA
Modifycation of an Existing Data Structure ■ OLD-DATA ⇒ NEW-DATA
Macro Expansion ✕ PRE-EXPAND ⇢ POST-EXPAND
For complex-procedure calls,
only the trace-lines were shown
but their input (S-expressions) and output (evaluation values) were not
in the old versions.
In the calls of the complex-procedures,
such as
apply
,
for-each
,
and
map
,
virtual lists enclosed with
{ }
,
respectively,
are generated for the internal calls of the sub-level procedures and shown
in VITSE.
As the result,
each of the trace-lines will not be broken in the middle
and always has its own input S-expression and the output value.
Continuation restarts,
together with its initial-value input,
are shown in an easy way for the user to understand.
The pattern of the trace-lines for the continuation restarts
is the only one exception for the unbroken trace line.
When a continuation restart restarts,
all previously continuous lines are interrupted,
and the trace-output will switch to that from the
generating point of the continuation.
This trace-output pattern is a good representation
for the logical structure of the continuation restart.
Even a beginner can intuitively grasp the continuation process
which is otherwise told to be hard to understand.
The trace-output function is active by default.
To inactivate it, please use the argument-command
-T false
Items and information of the trace-output can be configured respectively using
The argument-commands
(-Titem
and
-Tinfo
),
the kernel-configuration procedure
(viivi-set!
),
and the kernel setting panel in the IDE.
Trace-Output < VITSE < < Viivi's Cell < Entrance
Exhibited on 2022/03/02
Copyright(C) 2003-2022 ilma <ilma@viivi.io> All rights reserved.