Оператор index удаляет неотрицательное целое число n из стека операндов, отсчитывает n-й элемент от вершины стека и помещает копию этого элемента в стек. Это очень напоминает выборку элемента массива. При этом первый элемент в стеке имеет индекс 0. Вместе с операторами copy, dup и roll он позволяет свободно манипулировать содержимым стека операндов.
Синтаксис: an ... a0 n index à an ... a0 an
где an ... a0 – элементы стека операндов.
Пример.
Обозначим буквами содержимое стека, тогда:
A D G 0 index à A D G G
A D G J F 4 index à A D G J F A
Оператор clear извлекает все объекты из стека операндов и уничтожает их.
Синтаксис: a1 ... an clear à -
Оператор count пересчитывает число элементов в стеке операндов и возвращает его в вершине стека.
Синтаксис: a1 ... an count a1 ... an n
Примеры.
clear count -à 0
clear 1 2 3 count à 1 2 3 3
Оператор countexecstack считает число объектов в стеке исполнения и помещает это число в стек операндов.
Синтаксис:- countexecstack à int
Оператор counttomark считает число любых объектов в стеке операндов начиная с вершины стека и до первого маркера (не включая его самого).
Синтаксис: mark ob1 ... obn counttomark à mark ob1 ... obn n
Пример.
1 mark 2 3 counttomark à 1 mark 2 3 2
Оператор cleartomark извлекает любые объекты из стека операндов, пока не будет достигнут маркер, который также удаляется из стека.
Синтаксис: mark ob1 ... obn cleartomark à -