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

UptoLike

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

8
Для аргумента атома результат функции CAR не определен, и вследствие этого
появляется следующее сообщение об ошибке:
[0] (car 'дом)
[VM ERROR encountered!] Invalid operand to VM instruction
(CAR ДОМ)
(т. е. ДОМ не является списком).
Головной частью пустого списка считают для удобства NIL:
[1] (саг nil) ;голова пустого списка
NIL ;пустой список
[2] (car 'nil) ; знак ' можно опускать
NIL
[3] (car '(nil а)) ; голова списка NIL
NIL
Примеры:
[0] (car '(6 7 8))
6
[1] (car '(s1 s2))
S1
[2] (car '('first 'second))
(QUOTE FIRST)
[3] (car '(car (a b c)))
CAR
[4] (car (cons 'tail 'bar))
TAIL
[5] (car ())
()
Функция CDR возвращает в качестве значения хвостовую часть списка
Функция CDR применима к спискам. Значением ее будет хвостовая часть
списка, т. е. список, получаемый из исходного списка после удаления из него головного
элемента:
cdr: список -> список
Функция CDR не выделяет второй элемент списка, а берет весь остаток списка,
т. е. хвост. Заметим, что хвост спискатоже список,' если только список не состоял из
одного элемента. В последнем случае хвостом будет пустой список (), т. е. NIL:
                                            8

      Для аргумента атома результат функции CAR не определен, и вследствие этого
появляется следующее сообщение об ошибке:
       [0] (car 'дом)
       [VM ERROR encountered!] Invalid operand to VM instruction
       (CAR ДОМ)
     (т. е. ДОМ не является списком).


      Головной частью пустого списка считают для удобства NIL:
        [1] (саг nil)         ;голова пустого списка
       NIL                    ;пустой список
        [2] (car 'nil)        ; знак ' можно опускать
        NIL
        [3] (car '(nil а))    ; голова списка NIL
        NIL


      Примеры:
        [0] (car '(6 7 8))
        6
        [1] (car '(s1 s2))
        S1
        [2] (car '('first 'second))
        (QUOTE FIRST)
        [3] (car '(car (a b c)))
        CAR
        [4] (car (cons 'tail 'bar))
        TAIL
        [5] (car ())
        ()


Функция CDR возвращает в качестве значения хвостовую часть списка
      Функция CDR применима к спискам. Значением ее будет хвостовая часть
списка, т. е. список, получаемый из исходного списка после удаления из него головного
элемента:
    cdr: список -> список
        Функция CDR не выделяет второй элемент списка, а берет весь остаток списка,
т. е. хвост. Заметим, что хвост списка— тоже список,' если только список не состоял из
одного элемента. В последнем случае хвостом будет пустой список (), т. е. NIL: