- •1. Основные принципы работы в системе muLisp
- •3. Сообщения о прерывании работы интерпретатора
- •4. Сообщения об ошибках
- •5. Редактирование текстов программ и загрузка исходных
- •Insert - переключение режимов редактирования
- •6. Организация ввода-вывода
- •7. Отладка программ
- •8.6 Функции присваивания
- •8.7 Примитивы определения функций
- •8.4 Функции сравнения
- •8.5 Логические функции
- •8.8 Арифметические функции
- •8.9 Функционалы
- •8.10 Функции ввода
- •8.12 Функции работы со строками 2.
- •8.13 Работа со стеком 2.
- •8.14 Функции свойств
- •8.15 Контрольные конструкции
8.12 Функции работы со строками 2.
(SUBSTRING atom n m)
Если аtоm - либо символ, либо число, n и m - неотрица-
тельные целые, и n<=m, то (SUBSTRING атом n m) возвращает
символ, у которого имя состоит из символов имени исходно-
го атома, начиная с n-го по m-й, причем отсчет символов
ведется с 0. Все значения n меньше, чем 0, принимаются
равными 0. Если m пропущено или является отрицательным
целым или больше, чем количество символов в атоме, то
принимается, что m равно количеству символов в атоме. Ес-
ли n больше или равно количества символов в атоме или ес-
ли n>m, SUBSTRING возвращает символ, у которого имя есть
нулевая строка. Отметим, что SUBSTRING всегда возвращает
символ, даже если atom есть число.
(SUBSTRING 'ABCDEFG 2 4) --> CDE
(SUBSTRING 'ABCDEFG 2) --> CDEFG
(SUBSTRING 'ABCDEFG 0 4) --> ABCDE
(SUBSTRING 1000 0) --> 1000
(FINDSTRING atom1 atom2 n)
Эта функция возвращает номер позиции первого вхождения
атома1 в атом2, причем отсчет ведется с 0. Если n - ноль
или положительное целое, поиск начинается с n-го символа
атома2. Если атом1 не найдено, функция возвращает NIL.
(FINDSTRING 'XYZ 'ABCXYZDEFXYZGHI) --> 3
(FINDSTRING 'XYZ 'ABCXYZDEFXYZGHI 4) --> 9
(FINDSTRING 'XYZ 'ABCDEFGHI) --> NIL
- 33 -
(UNPACK atom)
Возвращает список символов полученных путем расщепления
атома. Если atom не является атомом, UNPACK возвращает
NIL.
(UNPACK 'ABCDE) --> (A B C D E)
(SETQ FOO -216) --> -216
(UNPACK FOO) --> (- \2 \1 \6)
(PACK list)
PACK возвращает символ, который состоит из сцепленных
имен атомов в list. Отметим, что PACK всегда возвращает
символ, даже если имя состоит только из однозначных чи-
сел.
(PACK '(A B C) ) --> ABC
(PACK '(3 A 5) ) --> 3A5
(PACK* atom1 atom2 ... atomN)
PACK* возвращает символ, который состоит из сцепленных
<атома1>, ..., <атомаN>. Функция PACK* аналогична PACK,
но работает не со списком атомов, а с произвольным коли-
чеством атомов.
(PACK* 'A 'B 'C) --> ABC
(PACK* 3 'A 5) --> 3A5
8.13 Работа со стеком 2.
(POP stack)
POP возвращает "верхушку" (т.е. car) "стека" stack, явля-
ющегося обычным списком, с одновременным удалением этого
элемента из списка. Если stack не является символом, то
возникает прерывание по ошибке "Несимвольный аргумент".
(SETQ STACK-LIST '(A B C D E F) ) --> (A B C D E F)
(POP STACK-LIST) --> A
(POP STACK-LIST) --> B
(POP STACK-LIST) --> C
STACK-LIST --> (D E F)
- 34 -
(PUSH form stack)
PUSH вычисляет form и "проталкивает" результат в стек
stack. Если stack не является символом, возникает преры-
вание по ошибке "Несимвольный аргумент".
(SETQ STACK-LIST NIL) --> NIL
(PUSH 'A STACK-LIST) --> (A)
(PUSH 'B STACK-LIST) --> (B A)
(PUSH 'C STACK-LIST) --> (C B A)
STACK-LIST --> (C B A)
