13!:0 y
|
Сброс. Сбросить стек и выключить (0) или включить
(1) прерывание. Практически все подсистемы семейства 13!:
требуют, чтобы прерывание было включено; все примеры ниже предполагают, что прерывание включено: 13!:0 ]1 . Только именованные определения
(глаголы, наречия, или союзы) могут быть прерваны.
|
|
13!:1 y |
Показать Стек. В стек помещаются только именованые определения (глаголы, наречия, или союзы). См. также 13!:13 и 13!:18 .
|
|
13!:2 y |
Запросить Ловушки.
|
|
13!:3 y |
Установить Ловушки. Ловушки устанавливаются по имени и номеру строки
в аргументе y, содержащем ноль или более описаний ловушек,
разделенных точками с запятой.
Каждое описание указывает имя, номера строк (если есть) в монадном случае,
двоеточие, и номера строк (если есть) в диадном случае.
Звездочка обозначает “все”, и тильда обозначает
“кроме”. Например:
13!:3 'f 0' |
f строка 0 монадного случая |
13!:3 'f :2' |
f строка 2 диадного случая |
13!:3 'f 0 2:1' |
f монадный 0 2, диадный 1 |
13!:3 'f 0; g :*' |
f монадный 0 и g все строки диадного |
13!:3 '* 0:0' |
монадный 0 и диадный 0 |
13!:3 'a* *:*; ~ab* *:*' |
Все монадные и диадные случаи определений, имена которых начинаются
на a,
кроме тех, имена которых начинаются на ab |
f=: 3 : 0
10
11
:
20
)
13!:3 'f 1:0' Прервать f на стр. 1 монады, и стр. 0 диады
f ''
|stop: f
| 11
|f[1]
13!:0 ]1 Очистить стек и включить прерывание
3 f 4
|stop: f
| 20
|f[:0]
|
13!:4 y |
Продолжить Снова. Продолжить выполнение с текущей строки. Например:
g=: 3 : ('t=. 2*y'; '1+t')
3 4,g 'abc'
|domain error: g
| t=.2 *y
|g[0]
y отступ в 6 пробелов означает прерывание
abc Локальное значение y
y=. 25 Переопределить локальное значение y.
13!:4 '' Продолжить, попытавшись выполнить снова
3 4 51
|
13!:5 y |
Продолжить Дальше. Продолжить выполнение со следующей сроки.
Например:
h=: 3 : ('t=. 2 3*y'; '1+t')
3 4,h 5 6 7
|length error: h
| t=.2 3 *y
|h[0]
t=. 99 отступ в 6 пробелов означает прерывание
13!:5 '' Продолжить дальше
3 4 100
|
13!:6 y |
Выйти и Вернуть. Выходит из глагола/наречия/союза на вершине стека,
возвращая результат y . Например:
g=: 3 : ('t=. 2*y'; '1+t')
3 4,g 'abc'
|domain error: g
| t=.2 *y
|g[0]
13!:6 [9 Выйти из g с результатом 9
3 4 9
h=: 2&*
3 4,h 'abc'
|domain error: h
|h[0]
13!:6 [97 Выйти из h с результатом 97
3 4 97
|
13!:7 y |
Продолжить На. Продолжить выполнение со строки под номером y
|
|
[x] 13!:8 y |
Выдать ошибку. Выдать ошибку с кодом {.,y
(целое от 1 до 255) и (необязательным) текстовым сообщением x
|
|
[x] 13!:9 y |
Выполнить Еще Раз. Продолжить выполнение, выполнив еще раз неявный глагол на вершине стека с указанными аргументами. Таким образом:
plus=: +
plus/'abc'
|domain error: plus
|plus[:0] *
13!:13 '' Интерпретацию стека см. ниже
+----+-+-+-+-++-----+--+-+
|plus|3|0|3|+||+-+-+| |*|
| | | | | |||b|c|| | |
| | | | | ||+-+-+| | |
+----+-+-+-+-++-----+--+-+
2 (13!:9) 3 Еще раз, получая другую ошибку
|domain error: plus
|plus[:0] !
13!:13 '' Обратите внимание на аргументы ('a' и 5)
+----+-+-+-+-++-----+--+-+
|plus|3|0|3|+||+-+-+| |*|
| | | | | |||a|5|| | |
| | | | | ||+-+-+| | |
+----+-+-+-+-++-----+--+-+
1 (13!:9) 5 Еще раз
6
|
13!:11 y
|
Код Ошибки. Код последней ошибки. Для работы не требует включенного прерывания.
|
|
13!:12 y
|
Сообщение об Ошибке. Сообщение о последней ошибке. Для работы не требует включенного прерывания.
|
|
13!:13 y |
Стек. Производит матрицу из 9-ти столбцов с информацией о
(именованых) глаголах/наречиях/союзах в стеке:
0 | Имя |
1 | Код ошибки или 0 если ее не было |
2 | Номер строки |
3 | Класс имени: 3, 1, или 2, соотв. глаголу, наречию или союзу |
4 | Линейное представление обьекта |
5 | Имя определяющего сценария |
6 | Аргумент(ы) упакованные индивидуально |
7 | Локальные имена в виде матрицы из 2-х столбцов: имени и значения |
8 | * если начало прерывания; иначе пробел |
В столбцах 6 и 7, существительные приводятся "как есть", а глаголы,
наречия и союзы в их линейном представлении.
Например:
mean=: sum % #
sum=: plus/
plus=: 4 : 'x+y'
mean 'abcd'
|domain error: plus
| x +y
|plus[:0]
13!:13 '' Заметьте, неявные о. не имеют локальных
+----+-+-+-+---------++------+-----+-+
|plus|3|0|3|4 : 'x+y'||+-+-+ |+-+-+|*|
| | | | | |||c|d| ||x|c|| |
| | | | | ||+-+-+ |+-+-+| |
| | | | | || ||y|d|| |
| | | | | || |+-+-+| |
+----+-+-+-+---------++------+-----+-+
|sum |0|0|3|plus/ ||+----+| | |
| | | | | |||abcd|| | |
| | | | | ||+----+| | |
+----+-+-+-+---------++------+-----+-+
|mean|0|0|3|sum % # ||+----+| | |
| | | | | |||abcd|| | |
| | | | | ||+----+| | |
+----+-+-+-+---------++------+-----+-+
|
13!:14 y |
Запросить Латентное Выражение.
|
|
13!:15 y |
Установить Латентное Выражение. Латентное выражение выполняется
перед тем как выполнение вот-вот прервется; сообщения об ошибках не выводятся;
any continuation must be programmed in the latent expression.
|
|
13!:17 y |
Запросить. Включено ли прерывание ? (Устанавливается 13!:0)
|
|
13!:18 y |
Стек как Текст. Как 13!:1, но выдает стек в виде
текстовой таблицы.
|
|
Прерванное состояние есть режим непосредственного исполнения
с непустыым стеком исполнения.
Новое прерванное состояние создается, когда именованный обьект
(глагол, наречие, или союз) выполняется
внутри прерванного состояния, и, в свою очередь, прерывается.
Доступны еще четыре глагола. Они являются частью отладочной подсистемы
интегрированной среды языка J и обычно не вызываются явно.
Их поведение и доступность могут быть изменены в будущем без предупреждения.
|
|
13!:19 y |
Отрезать Назад. Отрезать верхний уровень стека, останавливаясь
на первой строке, исполняемой на следующем уровне. |
|
[x] 13!:20 y |
Перешагнуть. Выполнить текущую строку (или строку x, если указана) до завершения, останавливаясь на следующей строке. |
|
[x] 13!:21 y |
Войти. Выполнить текущую строку (или строку x,
если указана), останавливаясь на следующей исполняемой строке. |
|
[x] 13!:22 y |
Выйти. Выполнить текущий обьект до конца, начиная с текущей
строки (или строки x, если указана),
останавливаясь на следующей исполняемой строке. |