Реферат: ЛИСП
_(ATOM ‘(a b c)) р NIL
_(ATOM NIL) р T
_(ATOM ‘(NIL)) р NIL
Предикат EQ сравнивает два символа и возвращает значение T, если они идентичны, в противном случае - NIL. С помощью EQ сравнивают только символы или константы T и NIL.
_(EQ ‘a ‘b) р NIL
_(EQ ‘a (CAR ‘(a b c))) р T
_(EQ NIL ()) р T
Предикат EQL работает так же как и EQ, но дополнительно позволяет сравнивать однотипные числа.
_(EQL 2 2) р T
_(EQL 2.0 2.0) р T
_(EQL 2 2.0) р NIL
Для сравнения чисел различных типов используют предикат «=». Значением предиката «=» является T в случае равенства чисел независимо от их типов и внешнего вида записи.
(= 2 2.0) р T
Предикат EQUAL проверяет идентичность записей. Он работает как EQL , но дополнительно проверяет одинаковость двух списков. Если внешняя структура двух лисповских объектов одинакова, то результатом EQUAL будет T.
_(EQUAL ‘a ‘a) р T
_(EQUAL ‘(a b c) ‘(a b c)) р T
_(EQUAL ‘(a b c) ‘(CONS ‘a ‘(b c))) р T
_(EQUAL 1.0 1) р NIL
Функция NULL проверяет на пустой список.
_(NULL ‘()) р T
Вложенные вызовы CAR и CDR.
Комбинации вызовов CAR и CDR образуют уходящие в глубину списка обращения, в Лиспе для этого используется более короткая запись. Желаемую комбинацию вызовов CAR и CDR можно записать в виде одного вызова функции:
(C...R список )
Вместо многоточия записывается нужная комбинация из букв A и D (для CAR и CDR соответственно). В один вызов можно объединять не более четырех функций CAR и CDR.
(CADAR x) у (CAR (CDR (CAR x)))
_(CDDAR ‘((a b c d) e)) р (c d)
_(CDDR ‘(k l m)) р (M)
Функция LIST - создает список из элементов. Она возвращает в качестве своего значения список из значений аргументов. Количество аргументов произвольно.
_(LIST ‘a ‘b ‘c) р (a b c)