[an error occurred while processing this directive]
BAND Subr
(BAND число...число)
Функция BAND обрабатывает аргументы как 16-битовые двоичные числа, и осуществляет логическое сложение их двоичных представлений. Например:
(BAND 5 9) = 1 (двоичный: 0101 & 1001 = 0001)
(BAND 31-2) = 30
(двоичный: 0000000000011111 & 1111111111111110 = 0000000000011110)
См. также BOR и BNOT.
BLANK переменная
BLANK = пробел
Начальное значение переменной BLANK - символ, печатное имя которого содержит один пробел.
BLANK часто используется при печати как, например, в строке
(PRINT A BLANK B BLANK C),
которая более удобна для чтения, чем ее эквивалент
(PRINT A'! B'! c)
См. также LPAR, RPAR, PERIOD, DOLLAR, CR для других переменных, имеющих в качестве начальных значений некоторые символы.
BNOT Subr
(BNOT число)
Функция BNOT обрабатывает свои числовые аргументы как 16-битовые двоичные числа и дополняет каждый бит. Результирующая битовая структура используется как числовой результат функции BNOT. Представление чисел, используемое в LISP, означает, что для любого числа n (BNOT n) имеет то же значение, что и (SUB1 MINUS N)), поэтому (BNOT 0) = -1, а (BNOT -100) = 99.
См. также BAND и BOR.
BOR Subr
(BOR число...число)
Функция BOR аналогична BAND, за исключением того, что она создает двоичное представление OR всех чисел, которые являются аргументами этой функции. Поэтому
(BOR 12 6) = 14 (двоичный: 1100! 0110 = 1110)
CALL Subr
(CALL адрес накапливающий сумматор)
Функция CALL обеспечивает возможность использования подпрограмм на машинном коде в языке LISP. Первый аргумент - число и обозначает адрес программы. Если адрес превышает число 32767, то используется эквивалент - двойное дополнительное отрицательное число. Второй аргумент определяет содержимое накапливающего сумматора микрокомпьютера на входе в подпрограмму и не является обязательным. Этот аргумент также должен быть числовым. Младший байт числа загружается в сумматор. CALL принимает значение содержимого сумматора по выходу из подпрограммы. Например, (CALL -32) вызывает из операционной системы OSRDCH, и потому возвращает код следующего напечатанного символа. См. также '*' и USR для альтернативного использования возможностей операционной системы LISP.CAR Subr
(CAR список), см. также CDR, CAAR,...CDDDR.
Функция CAR принимает значение части структуры, которая (структура) является аргументом функции. Аргумент CAR не может быть атомным.
Если аргумент рассматривается как список, то CAR выбирает первый элемент списка. Если подразумевается, что структура - это основная часть структуры данных, то CAR - это функция, которая следует за первым из двух указателей в узле. CDR находит второй указатель в паре, который относится к последней части списка. Сложные функции CAAR, CADR и т.д. существуют для всех комбинаций (до трех) букв A и D и предусматривает сложное использование CAR и CDR.
Например:
(CADR X) = (CAR (CDR X))
(CDDAR Z) = (CDR (CDR (CAR Z)))
Для построения списковых структур см. CONS и LIST.
CDR Subr
(CDR список)
См. CAR и главу 7.
CHARACTER Subr
(CHARACTER число)
Аргументом функции CHARACTER должно быть число в интервале (0,127). CHARACTER обрабатывает это число как код символа; возвращает идентификатор этого символа как печатное имя. Коды символов вы можете найти в Руководстве пользователю по программированию на Бейсике в среде ОС ОНИКС. Например, (CHARACTER 13) - возврат каретки, (CHARACTER 48) - символ 'О', (CHARACTER 65) - 'а'. См. ORDINAL.
CHARCOUNT Expr
(CHARCOUNT число элемент)
Принимает значение первого аргумента минус число символов, необходимое, чтобы напечатать 'элемент', или - ноль, если он отрицательный. Числа могут содержать 6 символов. CHARCOUNT используется в версии SPRINT, включенную в распространенную систему. Определение функции:
(DEFUN CHARCOUNT (X LEFT) (COND ((ATOM X ) (COND ((GREATERP LEFT (CHARS X)) (DIFFERENCE LEFT (CHARS X))))) (T (LOOP (UNTIL (ATOM X) (CHARCOUNT X (DIFFERENCE LEFT (COND (X 4) (T-2))))) (WHILE SETQ LEFT (CHARCOUNT (CAR X) (SUB1 LEFT)))) (SETQ X (CDR X))))))
CHARP Subr
(CHARP объект)
Функция CHARP принимает значение Т, если ее аргумент идентификатор. В противном случае, она принимает значение 0. Таким образом, CHARP можно использовать для различения идентификаторов (иногда встречающихся как символьные атомы) от других видов объектов в LISP, т.е. чисел, указателей кода, списков. Например:
(CHARP 'ABRACADABRA) = T (CHARP 42) = 0 (CHARP (CONS A B)) = 0 CHARS Subr (CHARS идентификатор)
принимает число символов в данном идентификаторе. Например,
(CHARS 'FOUR) = 4 (CHARS 'SIX) = 3 CLOCK Subr (CLOCK)
Эта функция принимает значение списка из трех чисел, которые обозначают время в часах, минутах и секундах, или с момента последней остановки компьютера по УПР+СБР, или с момента вызова функции LISP RESET. См. также TIME и GCTIME.
CLOSE Subr
(CLOSE указатель)
Закрывает файл, обращаясь к файлу по номеру указателя, сгенерированному для этого файла функцией OPEN. CLOSE выписывает полностью все буферы, связанные с данным файлом, а на системном диске дополняет директорию изменениями, касающимися длины файла. Особый случай (CLOSE 0) вызывает закрытие всех открытых в настоящий момент файлов.
COND Fsubr
(COND (предикат действие действие ...)...)
COND - основная структура LISP, обеспечивающая проверку и работу по условиям. COND может иметь любое число аргументов. Эти аргументы обрабатываются специальным образом. Интерпретатор LISP следит за аргументами COND в том порядке, в каком они появляются. Каждый аргумент - это список. Значение первого элемента списка, т.е. условия, определяет предпринятое действие. Если значение = 0, то остальная часть списка игнорируется и LISP переходит к следующему аргументу. Если значение = Т, или любому другому отличному от нуля числу, то оставшиеся элементы списка обрабатываются друг за другом. Ограничений на количество элементов списка тоже нет. Возможны два особых случая:
(а) Значение всех условий = 0. Вэтом случае значение COND = 0.
(б) В список аргументов не входят действия, а только условия. Тогда значение условия принимается, если оно ненулевое.
Например:
(COND ((EQ X 3) (PRINT 'THREE) 'YES) (T 'NO))
Функция COND напечатает THREE и примет значение YES, если значение Х=3. В противном случае, она получит значение NO. Выражение COND очень часто заканчивается условием Т, чтобы справиться со всеми оставшимися возможностями. Другой пример:
(COND ((OR (MINUS HOUR) (GREATERP HOUR 23)) (ERROR '(HOUR NOT TIME OF DAY))) ((LESSP HOUR 7) 'NIGHT) ((LESSP HOUR 12) 'MORNING) ((LESSP HOUR 18) 'AFTERNOON) ((LESSP HOUR 22) 'EVENING) (T 'NIGHT)
Здесь функция принимает значение времени дня, в зависимости от значения HOUR (час). Если значение HOUR недопустимое, то появляется сообщение об ошибке.
CONS Subr
(CONS аргумент1 аргумент2)
Эта функция создает новую пару точек из своих аргументов. Чаще всего второй аргумент будет списком (возможно пустой список NIL). Тогда результатом CONS будет тоже список и он получается соединением первого аргумента CONS с началом списка. Таким образом,
(CONS 'A '(B C D)) = '(A B C D).
Функцию CONS можно еще описать через CAR и CDR. Если Х - список, тогда (CONS (CAR X) (CDR X)) - другой список, который на печати выглядит так же как Х, но использует новую область памяти для хранения первой связи. Например,
(CONS 'ALPHA 'OMEGA) = (ALPHA . OMEGA) (CONS 'XXX NIL) = (XXX . NIL) = (XXX) (CONS 'C '(D)) = (C D) (CONS '(D) 'C) = ((D) . C)
CR переменная
CR = символ новой строки
Значение этой функции - идентификатор, имя которого - возврат каретки. Таким образом (PRINC CR) эквивалентно (PRINT) .CR = (CHARACTER 13). СМ. также BLANK.
DEFUN Expr
(DEFUN имя функции параметры тело...))
DEFUN - это удобный способ задания функций. Никакие аргументы не вычисляются. Использование функции DEFUN эквивалентно
(SETQ имя функции
'(LAMBDA параметры тело...))
Значение, полученное функцией DEFUN - имя функции, которая была определена. Второй аргумент (параметры) - список аргументов и локальных переменных, которые использует функция. Функции может быть задано любое количество действий для выполнения.
(DEFUN ADD2 (X) (PLUS X 2))
определяет функцию ADD2, присвоением значения (LAMBDA (X) (PLUS X 2))
DIFFERENCE Subr
(DIFFERENCE число число)
Принимаемое значение получено вычитанием второго аргумента из первого. Например, если А=77, тогда (DIFFERENCE A 23)=54. В случае нечислового аргумента или при выходе результата за пределы допустимых значений, появится сообщение об ошибке. См. PLUS и MINUS.
DOLLAR переменная
DOLLAR = символ '&'
См. BLANK.
EDIT Expr
(EDIT имя функции)
Подробное описание и сообщение об использовании EDIT даны в разделе 23.8. Основные команды:
A перемещает в поле CAR B возвращает на один уровень (т.е. обратная A,D) C s вставка S-выражения впереди текущего списка D перемещает в поле CDR R s меняет текущее выражение на S-выражение X перемещает начало текущего списка <return> оформляет печать текущеего выражения
ENVELOPE Subr
(ENVELOPE <14 чисел>)
ENVELOPE используется с SOUND для контроля характеристик нот, звучащих на четырехзвуковых каналах модуля расширения "СПРУТ". Необходимо задать 14 аргументов, все они числа в диапазоне от 0 до 255. Подробное описание значений этих чисел можно найти в руководстве пользователю, поставляемом вместе с компьютером, где приводится следующее представление полицейской сирены:
(ENVELOPE 2 1 2 -2 2 10 20 10 1 0 0 -1 100 100)
EOF Subr
(EOF указатель)
Определяет достигнута ли метка конца файла при его чтении. Принимает значение Т, если да, и ноль, если нет. Аргументом должен быть указатель, который задается OPEN.
EQ Subr
(EQ аргумент1 аргумент2)
Функция EQ принимает значение Т, если одно из следующих условий выполняется для обоих аргументов:
(а) Аргументы - одинаковые идентификаторы.
(б) Аргументы - одинаковые числа.
(в) Аргументы - одинаковые списки в памяти LISP.
В противном случае, EQ = 0. Например:
(EQ 4 4) = T (EQ 'FRED 'FRED) = T (EQ '() NIL) = T, (т.к. () и ноль - одинаковые обекты) (EQ 'FRED 4) = 0
Два списка являются одинаковыми (EQ), если они занимают одинаковый объем памяти, наряду с тем, что они являются одинаковыми по представлению в пвмяти. Чаще всего EQUAL используется при работе со списками (см. Приложение В).
ERROR Subr
(ERROR сообщение сообщение...)
Функция ERROR ведет себя также, как и PRINT при выводе аргумента на дисплей. После вывода на экран функция генерирует ошибку 15 и происходит обычная обратная трассировка. Здесь приводится пример ее использования, при этом проверяется список L прежде чем находится его CDR.
(COND ((ATOM L) (ERROR L BLANK 'NOT 'LIST)) (T (CDR L)))
ERRORSET Fsubr
(ERRORSET выражение)
Обычно при возникновении ошибки во время оценки выражения производится обратная трассировка всех функций и остановка программы. ERRORSET является средством избежания этого и осуществления контроля программы. Аргументом функции является выражение, которое обрабатывается и может дать сбой. Если обработка прошла успешно, ERRORSET работает как LIST, т.е. (выражение ERRORSET) эквивалентно (выражению LIST). Заметьте, что в этом случае значение, полученное ERRORSET не может быть атомом. Если обработка защищенного выражения не удается, то ERRORSET принимает значение числа найденных ошибок. Таким образом, следующий цикл принимает значение выражения, прочитанного при вводе с клавиатуры и вылавливает ошибки, возникающие при чтении, если неправильно расставлены скобки и точки:
(LOOP (SETQ X (ERRORSET (READ))) (UNTIL (LISTP X) (CAR X)) (PRINT '(TRY TYPING THAT AGAIN PLEASE)))
См. MESSON и MESSOFF, чтобы проверить количество диагностических сообщений, выдаваемых на печать в случае ошибки.
EVAL Subr (EVAL выражение)
EVAL принимает полученное значение аргумента. Аргументом может быть идентификатор, в этом случае EVAL обрабатывает его как имя переменной и ищет его значение; или список, тогда EVAL интерпретирует его как применение функции. Таким образом, после
(SETQ EXPRESSION '(PLUS 2 3))
значением EXPRESSION является список (PLUS 2 3), а значением (EVAL EXPRESSION) - 5.
EXPLODE Subr (EXPLODE идентификатор)
Аргументом функции EXPLODE должен быть идентификатор, а результатом - список символов, сотавляющих его имя. Например, (EXPLODE 'BOMB) - список (B O M B). См. IMPLODE для осуществления обратной операции и CHARS для определения количества символов в имени идентификатора.
F переменная
F = 0
Начальное значение F - ноль. F предназначена для использования логического значения 'ложь', как T используется для 'истина'. При использовании F с этой целью будьте осторожны и не употребляйте ее как обычную переменную
FSUBRP Subr
(FSUBRP аргумент)
Функция FSUBRP проверяет является ли ее аргумент атомом Fsubr. Если да, то функция принимает значение Т, если нет - 0. Атомы Fsubr представляют входные точки тех предопределенных функций LISP, которые обрабатывают свои аргументы особым образом, и которые помечены Fsubr в данном Приложении. Таким образом,
(FSUBR COND) = T (FSUBR CONS) = 0 (CONS определена как Subr, а не Fsubr) (FSUBR 'COND) = 0,
где в последнем случае результат = 0 потому, что аргумент, передаваемый FSUBR является идентификатором COND, который не совпадает с указателем кода, определяющим функцию, связанную с этим идентификатором. См. также SUBRP.
GCTIME Subr
(GCTIME)
Принимает значение времени в единицах 1/1000 секунды, затрачиваемое на сбор ненужной информации (мусора). Записанное время обнуляется функцией RESET. См. также TIME.
GET Subr
(GET идентификатор характкристики-имя)
GET осуществляет поиск списка характеристик идентификатора для данной характеристики-имя. Если имя найдено, характеристика принимается. Если такой характеристики нет, значение GET = 0.Характеристики заносятся в список характеристик с помощью оператора PUT. Так например, после (PUT 'GET 'DESCRIPTION '(RECOVER ITEM FROM PROPERTY LIST)) значение (GET 'GET 'DESCRIPTION) будет (RECOVER ITEM FROM PROPERTY LIST). Заметьте, что невозможно различить несуществующую характеристику и существующую, но равную нулю.
GETCHAR Subr
(GETCHAR)
GETCHAR принимает значение односимвольного идентификатора. Это следующий считываемый с клавиатуры символ. GETCHAR может получить в качестве аргумента указатель файла (см. OPEN), в этом случае он считывает один символ из определенного файла. См. также READLINE, READ, ORDINAL.
GREATERP Subr
(GREATERP число число)
Сравниваются два числовых аргумента и GREATERP принимает значение Т, если первый аргумент строго больше второго, и - ноль, в противном случае. Если аргумент нечисловой генерируется ошибка. См. также LESSP и MINUSP.
IMPLODE Subr
(IMPLOE список символов)
Аргументом IMPLOE должен быть список идентификаторов, каждый элемент которого - один символ. IMPLODE принимает значение идентификатора, имя которого состоит из этих символов. Результат IMPLODE - идентификатор, если даже все символы аргумента числа, или знаки препинания, скобки и пробелы. См. EXPLODE для обратной операции. Примеры:
(IMPLODE '(C A R)) = CAR (IMPLODE (CDR (EXPLODE 'THAT))) = HAT
LAMBDA специальный идентификатор
(LAMBDA список аргументов тело ...)
LAMBDA используется как первый элемент в определении функции Expr. Список, который начинается с идентификатора LAMBDA можно рассматривать как функцию, и такие функции без имени могут использоваться в связи с функциями MAP и MAPC.
LESSP Subr
(LESSP число число)
LESSP принимает значение Т, если ее первый аргумент строго меньше второго. В противном случае - ноль. Оба аргумента должны быть числовыми. Например:
(LESSP 5 10) = T (LESSP 6 6) = 0
LINEWIDTH переменная
LINEWIDTH = 31
LINEWIDTH - переменная, которую использует функция SPRIN как предельно допустимое число символов в одной строке. Может быть целесообразно изменить это значение при выборе режима экрана 64 колонок, или если вывод осуществляется на принтер.
LIST Subr
(LIST аргумент1 аргумент2...)
LIST может иметь до 28 аргументов. Функция составляет список, элементами которого являются значения переменных. Если аргументов нет, LIST становится пустым списком, т.е. ноль. Например:
(LIST 'A 3 '(X Y)) = (A 3 (X Y)) (LIST) = 0 (LIST (LIST '0)) = ((0))
Структуры, которые создает LIST, могут быть также созданы фунуцией CONS. Так например, результат (LIST 'A 3 '(X Y)) может быть достигнут если написать
(CONS 'A (CONS '(X Y) NIL))),
где непосредственное использование CONS делает необходимым упоминание о нуле, который завершает составленный список.
LISTP Subr
(LISTP объект)
LISTP принимает значение Т, если аргумент - список пар точек, и ноль, если аргумент - атом. Функция LISTP является обратной функции ATOM, где для любого x (NULL (ATOM x)) равно (LISTP x).
(LISTP (CONS <что-либо> <что-либо>)) = Т (LISTP 3) = 0
LOAD Subr
(LOAD имя файла)
Аргументом функции должно быть имя файла, созданное SAVE. LOAD считывает файл в память и таким образом восстанавливает все рабочее пространство LISP до того состояния, которое было перед выполнением SAVE. При этом значения переменных теряются, и до выполнения LOAD следует определение функций, которые заменяются функциями, сохраненными в файле.
LOOP Fsubr
(LOOP действие действие...)
Эта функция описана в главе 17, и используется в связи с функциями UNTIL и WHILE. Она обеспечивает повторное выполнение установки команд LISP. Например,
(LOOP (UNTIL (ATOM (ERRORSET (PRINT(EVAL (READ))))) (LOOP (UNTIL (ATOM (ERRORSET (PRINT (EVAL (READ))))) 'DONE))
- это цикл, который выполняется согласно (READ (EVAL (PRINT))), пока ошибка не будет обнаружена и выловлена ERRORSET.
LPAR переменная
LPAR = символ (
LPAR содержит идентификатор '(' как значение. См. BLANK I RPAR.
MAP Subr
(MAP список функций)
MAP образует новый список, элементами которого являются результаты применения второго аргумента к части списка, которая является первым аргументом. В языке LISP эта функция определяется следующим образом:
(DEFUN MAP (L FN) (COND ((NULL L) NIL) (T (CONS (FN L) (MAP (CDR L) FN)))))
Таким образом, если первый аргументом был список (A B C), результатом будет список из трех элементов, которые являются значениями FN аргументов (A B C), (B C) и (C). Чаще используется MAPC вместо MAP.
MAPC Subr
(MAPC список функций)
Каждый элемент списка передается функции как аргумент, и результирующие значения составляют список. MAPC определяется в LISP следующим образом:
(DEFUN MAPC (L FN) (COND ((NULL L) NIL) (T (CONS (FN (CAR L)) (MAPC (CDR L) FN)))))
Например, чтобы увеличить вдвое числа в списке, можно использовать
(MAPC '(1 3 4 2 0) '(LAMBDA (X) (TIMES 2 X)))
MESSOFF Subr
(MESSOFF число))
MESSON и MESSOFF используются для контроля вывода системных сообщений. MESSON позволяет вывод сообщений, MESSOFF отменяет вывод. Режим вывода сообщений остается установленным до тех пор, пока не возникнет серьезная ошибка, или не будет нового объявления MESSON или MESSOFF. Каждому сообщению соответствует один бит аргумента этой функции, и контроль осуществляется с использованием следующих номеров:
Номер Сообщение ----- --------- 1 Собранные байты "коллекции мусора" 2 Номер "коллекции мусора" 4 Номер ошибки 8 Аргументы ошибки верхнего уровня 16 Ошибка отмены трассировки 128 Подсказка глубины чтения
Таким образом (MESSOFF 16) отменяет подробную обратную трассировку ошибок до следующего сообщения: (MESSOFF 3) - отменяет все сообщения из коллектора "мусора", а (MESSON 128) возвращает подсказку '>' (которая обозначает заключение в скобки во время чтения)). Контроль сообщений об ошибках, который обеспечивают эти функции может использоваться вместе с функцией ERRORSET.
.сс
[an error occurred while processing this directive]