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

UptoLike

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

36
n
(cons (ONION (- n 1)) nil)
)
)
Результат выполнения:
[1] (onion 5)
(((((0)))))
Определите функцию FIRSTATOM, результатом которой будет первый атом
списка.
Функция:
(define (FIRSTATOM L)
(cond
((atom? L) L)
(t (FIRSTATOM (car L)))
)
)
Результат выполнения:
[1] (firstatom '((a bc) def))
A
Определите функцию, DELFIRST удаляющую из списка первое вхождение
заданного элемента.
Функция:
(define (DELFIRST A L)
(cond
((equal? (car L) A) (cdr L))
(t (cons (car L) (DELFIRST A (cdr L))))
)
)
Результат выполнения:
[27] (delfirst 'bc '(a bc def bc))
(A DEF BC)
Определите функцию, вычисляющую общее количество всех атомов в списке.
Функция:
(define (AtomCount L)
(cond
((null? L) 0) ;список пуствозвращаем 0
((atom? (car L))
(+ 1 (AtomCount (cdr L))));головаатом
;возвращаем 1+число атомов
в хвосте
(t
(+ (AtomCount (car L)) (AtomCount (cdr L)))
;головасписок. Обрабатываем
голову и хвост
;поэлементно.
)
)
)
Результат выполнения:
[1] (atomcount '(a b c))
3
[2] (atomcount '(a (b c (d (e)))))
5
Определите функцию двух аргументов-списков, возвращающую первый элемент,
                                       36

                   n
                   (cons (ONION (- n 1)) nil)
        )
)
Результат выполнения:
       [1] (onion 5)
       (((((0)))))

   Определите функцию FIRSTATOM, результатом которой будет первый атом
   списка.
Функция:
(define (FIRSTATOM L)
        (cond
                ((atom? L) L)
                (t (FIRSTATOM (car L)))
        )
)
Результат выполнения:
       [1] (firstatom '((a bc) def))

          A
   Определите функцию, DELFIRST удаляющую из списка первое вхождение
   заданного элемента.
Функция:
(define (DELFIRST A L)
        (cond
                ((equal? (car L) A) (cdr L))
                (t (cons (car L) (DELFIRST A (cdr L))))
        )
)
Результат выполнения:
       [27] (delfirst 'bc '(a bc def bc))
       (A DEF BC)


   Определите функцию, вычисляющую общее количество всех атомов в списке.
Функция:
(define (AtomCount L)
      (cond
            ((null? L) 0)                 ;список пуст – возвращаем 0
            ((atom? (car L))
                  (+ 1 (AtomCount (cdr L))));голова – атом
                                                ;возвращаем 1+число атомов
                           в хвосте
              (t
                     (+ (AtomCount (car L)) (AtomCount (cdr L)))
                                             ;голова – список. Обрабатываем
                           голову и хвост
                                             ;поэлементно.
              )
      )
)
Результат выполнения:
       [1] (atomcount '(a b c))
       3
       [2] (atomcount '(a (b c (d (e)))))
       5


   Определите функцию двух аргументов-списков, возвращающую первый элемент,