The crash is gone, right? That makes it not a 'given'.
$: has never produced a stack frame. Stack frames are created
* when debug is on and
** the parser starts
** a name is executed
** an explicit definition starts (9.6 only)
* when debug is off and there is an error (for postmortem debugging, 9.6
only)
Whatever. Now comes the petitioner, asking for a way to know what $:
means. There is no way to get that information out of the sentence as a
result. It could perhaps be stored at some signal and queried later;
but then you could get only one value per console sentence. And, that
value would have to be formatted as the signal in encountered, because
the components of the executing verb may disappear after they are used.
Given all that, I think the signal should cause the value of the
executing verb to be displayed on the console immediately.
What would the signal be? I can imagine
* A new verb $:: that is $: with display of the linear rep of $:
* A new form $:!.r that is like $: with display of the selected rep of
$: (r must be an atom)
* A new conjunction (u 13!:n r) that would display u in representation r
(r could be a list but would probably be restricted to atoms)
13!:n is most general, but when would you ever use it except for looking
into $:? I guess you might have a verb containing nouns, gerunds, etc.
that are not known until execution of the sentence. OTOH, 13!:n would
have to know about $: as a special case of u so that it would report the
value starting at the recursion point rather than simply showing '$:'.
Which of those appeals? Or perhaps something else? How often can you
see yourself using this?
Note: you would be able to write
dispu =: 13!:n (5)
and then use dispu in ($: dispu), because named modifiers that do not
refer to names are stacked by value and would not reset $: .
Henry Rich