ВУЗ:
Составители:
Рубрика:
14
[8] (equal? '(nil) '((nil)))
()
Принцип работы предиката ЕQUAL? состоит в следующем: если внешняя
структура двух лисповских объектов одинакова, то эти объекты между собой равны в
смысле EQUAL?. Предикат EQUAL? также применим к числам и к другим типам
данных (например, к строкам). Заметим, что в соответствии со своим принципом
работы он не подходит для сравнения разнотипных чисел, так как их внешние
представления различаются.
ДРУГИЕ ПРИМИТИВЫ
Несмотря на то, что обычную обработку списков всегда можно свести к
описанным ранее трем базовым функциям (CONS, CAR, CDR) и двум базовым
предикатам (АТОМ? и EQ?), программирование лишь с их использованием было бы
очень примитивным и похожим на программирование на внутреннем машинном
языке. Поэтому в
Лисп — систему включено множество встроенных функций для
различных действий и ситуаций. Рассмотрим некоторые такие примитивы и их
полезные свойства.
NULL? проверяет на пустой список
Встроенная функция NULL? проверяет, является ли аргумент пустым списком:
[0] (null? '())
#T
[1] (null? 'a)
()
[2] (null? (cddr '(a b c)))
()
[3] (null? nil)
#T
[4] (null? 'nil)
()
[5] (null? t)
()
Из примеров видно, что NULL? работает как логическое отрицание, у которого в
Лиспе есть и свой, принадлежащий
логическим функциям, предикат (NOT X):
[0] (not t)
()
[1] (not nil)
#T
[2] (not (not t))
#T
[3] (not (not nil))
()
[4] (not (null? nil))
()
14 [8] (equal? '(nil) '((nil))) () Принцип работы предиката ЕQUAL? состоит в следующем: если внешняя структура двух лисповских объектов одинакова, то эти объекты между собой равны в смысле EQUAL?. Предикат EQUAL? также применим к числам и к другим типам данных (например, к строкам). Заметим, что в соответствии со своим принципом работы он не подходит для сравнения разнотипных чисел, так как их внешние представления различаются. ДРУГИЕ ПРИМИТИВЫ Несмотря на то, что обычную обработку списков всегда можно свести к описанным ранее трем базовым функциям (CONS, CAR, CDR) и двум базовым предикатам (АТОМ? и EQ?), программирование лишь с их использованием было бы очень примитивным и похожим на программирование на внутреннем машинном языке. Поэтому в Лисп — систему включено множество встроенных функций для различных действий и ситуаций. Рассмотрим некоторые такие примитивы и их полезные свойства. NULL? проверяет на пустой список Встроенная функция NULL? проверяет, является ли аргумент пустым списком: [0] (null? '()) #T [1] (null? 'a) () [2] (null? (cddr '(a b c))) () [3] (null? nil) #T [4] (null? 'nil) () [5] (null? t) () Из примеров видно, что NULL? работает как логическое отрицание, у которого в Лиспе есть и свой, принадлежащий логическим функциям, предикат (NOT X): [0] (not t) () [1] (not nil) #T [2] (not (not t)) #T [3] (not (not nil)) () [4] (not (null? nil)) ()
Страницы
- « первая
- ‹ предыдущая
- …
- 12
- 13
- 14
- 15
- 16
- …
- следующая ›
- последняя »