Micro Lisp. Основные понятия, структуры и функции. Яшин Л.З. - 11 стр.

UptoLike

Составители: 

11
АТОМ? и EQ? являются базовыми предикатами Лиспа. С их помощью и
используя другие базовые функции, можно задать более сложные предикаты, которые
будут проверять наличие более сложных свойств.
Предикат АТОМ? проверяет, является ли аргумент атомом
При работе с выражениями необходимо иметь возможность проверить,
является ли выражение атомом или списком. Это может потребоваться, например,
перед применением функций CAR и CDR, так как эти функции определены лишь для
аргументов, являющихся списками. Базовый предикат АТОМ? используется для
идентифицирования лисповских объектов, являющихся атомами:
(АТОМ? s-выражение)
Значением вызова АТОМ? будет Т, если аргументом является атом, и () — в
противном случае:
[0] (atom? 'x)
#T
[1] (atom? '(a b c))
()
[2] (atom? '(Я программирую - следовательно существую))
()
[3] (atom? (cdr '(a b c)))
()
[4] (atom? (car '(a b c)))
#T
[5] (atom? (+ 5 6))
#T
С помощью предиката АТОМ? можно убедиться, что пустой список NIL, или (),
является атомом:
[0] (atom? nil)
#T
[1] (atom? 'nil)
#T
[2] (atom? ())
#T
[3] (atom? '(nil))
()
[4] (atom? (atom? (+ 2 3)))
#T
[5] (atom? (atom? '(+ 2 3)))
#T
[6] (atom? '(atom? (+ 2 3)))
()
В Лиспе существует целый набор предикатов, проверяющих тип являющегося
аргументом выражения или любого другого лисповского объекта и таким образом
идентифицирующих используемый тип данных.
                                       11

      АТОМ? и EQ? являются базовыми предикатами Лиспа. С их помощью и
используя другие базовые функции, можно задать более сложные предикаты, которые
будут проверять наличие более сложных свойств.

Предикат АТОМ? проверяет, является ли аргумент атомом
      При работе с выражениями необходимо иметь возможность проверить,
является ли выражение атомом или списком. Это может потребоваться, например,
перед применением функций CAR и CDR, так как эти функции определены лишь для
аргументов, являющихся списками. Базовый предикат АТОМ? используется для
идентифицирования лисповских объектов, являющихся атомами:
     (АТОМ? s-выражение)
      Значением вызова АТОМ? будет Т, если аргументом является атом, и () — в
противном случае:
       [0] (atom? 'x)
       #T
       [1] (atom? '(a b c))
       ()
       [2] (atom? '(Я программирую - следовательно существую))
       ()
       [3] (atom? (cdr '(a b c)))
       ()
       [4] (atom? (car '(a b c)))
       #T
       [5] (atom? (+ 5 6))
       #T
      С помощью предиката АТОМ? можно убедиться, что пустой список NIL, или (),
является атомом:
        [0] (atom? nil)
        #T
        [1] (atom? 'nil)
        #T
        [2] (atom? ())
        #T
        [3] (atom? '(nil))
        ()
        [4] (atom? (atom? (+ 2 3)))
        #T
        [5] (atom? (atom? '(+ 2 3)))
        #T
        [6] (atom? '(atom? (+ 2 3)))
        ()

     В Лиспе существует целый набор предикатов, проверяющих тип являющегося
аргументом выражения или любого другого лисповского объекта и таким образом
идентифицирующих используемый тип данных.