Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка по языку ЛИСП.doc
Скачиваний:
114
Добавлен:
28.06.2014
Размер:
211 Кб
Скачать
☆

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)