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

UptoLike

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

15
Вложенные вызовы САМ и CDR можно записывать в сокращенном виде
Комбинируя селекторы CAR и CDR, можно выделить произвольный элемент
списка. Например:
[5] (cdr (cdr (car '((а b с) (d е) (f)))))
(С)
Комбинируя вызов CAR и CDR образуют уходящие в глубину списка
обращения, и в Лиспе используется для этого более короткая запись: желаемую
комбинацию вызовов CAR и CDR можно записать в виде одного вызова функции:
(С... R список)
Вместо многоточия записывается нужная комбинация из букв А (для функции
CAR) и D(для функции CDR):
(cadr х) —> (саr (cdr x))
(cddar х) —> (cdr (cdr (саr х)))
Примеры:
[6] (cddar '((а b с) (d е) (f)))
(С)
[7] (cddddr '(Программировать на Лиспе просто ?))
(?)
LIST создает список из элементов
Другой часто используемой встроенной функцией является: (LIST х1 х2 хЗ ... )
которая возвращает в качестве своего значения список из значений аргументов.
Количество аргументов функции LIST произвольно:
[0] (list 1 2)
(1 2)
[1] (list 'а 'b (+ 1 2))
(А B 3)
[2] (list 'а '(b с) 'd)
(А (B С) D)
[3] (list (list 'а) 'b nil)
((А) B ())
[4] (list nil)
(())
Построение списков нетрудно свести к вложенным вызовам функции CONS,
причем вторым аргументом последнего вызова является NIL, служащий основой для
наращивания списка:
[0] (list 'а)
                                          15

Вложенные вызовы САМ и CDR можно записывать в сокращенном виде
      Комбинируя селекторы CAR и CDR, можно выделить произвольный элемент
списка. Например:
        [5] (cdr (cdr (car '((а b с) (d е) (f)))))
        (С)


      Комбинируя вызов CAR и CDR образуют уходящие в глубину списка
обращения, и в Лиспе используется для этого более короткая запись: желаемую
комбинацию вызовов CAR и CDR можно записать в виде одного вызова функции:
      (С... R список)
      Вместо многоточия записывается нужная комбинация из букв А (для функции
CAR) и D(для функции CDR):
       (cadr х) —> (саr (cdr x))
       (cddar х) —> (cdr (cdr (саr х)))


      Примеры:


        [6] (cddar '((а b с) (d е) (f)))
       (С)
       [7] (cddddr '(Программировать на Лиспе просто ?))
       (?)

LIST создает список из элементов
      Другой часто используемой встроенной функцией является: (LIST х1 х2 хЗ ... )
которая возвращает в качестве своего значения список из значений аргументов.
Количество аргументов функции LIST произвольно:
       [0] (list 1 2)
       (1 2)
       [1] (list 'а 'b (+ 1 2))
       (А B 3)
       [2] (list 'а '(b с) 'd)
       (А (B С) D)
       [3] (list (list 'а) 'b nil)
       ((А) B ())
       [4] (list nil)
       (())
      Построение списков нетрудно свести к вложенным вызовам функции CONS,
причем вторым аргументом последнего вызова является NIL, служащий основой для
наращивания списка:
       [0] (list 'а)