Инструменты пользователя

Инструменты сайта


examination:flp:question13

Предикат АТОМ проверяет, является ли аргумент атомом.

При работе с выражениями необходимо иметь возможность проверить, является ли выражение атомом или списком. Это может потребоваться, например, перед применением функций CAR и CDR, так как эти функции определены лишь для аргументов, являющихся списками. Базовый предикат АТОМ используется для идентифицирования лисповских объектов, являющихся атомами:

(АТОМ s-выражение) 

Значением вызова АТОМ будет Т, если аргументом является атом, и NIL - в противном случае.

(atom 'x)  
> Т ;• X - это атом
(atom '(Я программирую - следовательно существую))
> NIL
(atom (cdr '(а b с))) 
> NIL ; AXOM от списка (В С) - это NIL 

С помощью предиката АТОМ можно убедиться, что пустой список NIL, или (), является атомом:

_(а1ош nil)
> Т 
_(atom О) ; О - то же самое, что и NIL 
> Т 
_(atoB 'О) ; Пустой список с апострофом 
> Т ; все равно есть NIL 
_(а1ош '(nil)} ; Аргумент - одноэлементный 
> NIL ; список 
_(atom (а1ош (+23))) ; Логическое 
> Т ; значение Т является атомом 


В последнем примере результатом сложения является число, а результатом внутреннего вызова предиката АТОМ - значение Т, которое, в свою очередь, тоже является атомом.

В Лиспе существует целый набор предикатов, проверяющих тип являющегося аргументом выражения или любого другого лисповского объекта и таким образом идентифицирующих используемый тип данных. Например, LISTP идентифицирует списки, AR- RAYP - массивы (array) и т.д. Позднее мы рассмотрим типы данных более подробно.

examination/flp/question13.txt · Последние изменения: 2014/01/15 12:17 (внешнее изменение)