From J Wiki
Jump to navigation Jump to search
Overview   Commands   Stack   Stops   Watch   Verbs


You can set and query stops using the foreign conjunctions dbss (13!:3) and dbsq (13!:2), and using the utilities dbstop and dbstopme.

You can also set and view stops with Debug:

  • the stop name button in the Debug toolbar sets stops on all lines in the selected name
  • the Debug Stop Manager lets you set stops on any active definition

For names whose definition has more than one line, Debug distinguishes between stops set on specific lines (marked with *) and stops set on all lines (marked with |). For one-line definitions, only the all lines marker is used.

The namelist in the Stop Manager defaults to the selected definition (if any), and the names on the stack. Select the In Locale checkbox to view names by locale. Place the cursor on a name, and run the Stop Manager toolbar button to view that name.

Note that comment lines are ignored when setting stops.

Definitions with headers

A definition is said to have a header if the definition has anything beyond a simple verb define or 3 : 0. Examples of verbs with headers are:

listverb =: 3 : 0"1

boxverb =: 4 : 0&.>

If you select a verb with a header in the Stops Manager, the verb will be split into two parts:

  • the body of the verb will be moved into a new verb with a system-defined name
  • the named verb will be replaced by a one-line definition that refers to the body

For example, listverb above would be replaced by

listverb =: listverbd3B7g0"1
listverbd3B7g0 =: 3 : 0

The two parts will both be shown in the name list of the Stops Manager. The original name will refer to the body, and the header will be shown separately.

The effect of all this is that you can set stops in verbs with headers without taking any special steps or indeed without realizing that the new names have been introduced.

The system-defined names are hidden from view in all the displays except in the full stack display, where the exact names on the stack are shown.