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

UptoLike

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

37
входящий в оба списка и NIL, если такого элемента нет.
Функция:
(define (FirstCoincidence L1 L2)
(cond
((null? L1) ;NIL – если первый список пуст
nil)
((member (car L1) L2) ;если первый элемент
первого
;списка входит во второй
(car L1)) ;возвращаем этот элемент
(t
;иначеприменяем функцию
к
;хвосту первого списка
(FirstCoincidence (cdr L1) L2)
)
)
)
Результат выполнения:
[0] (FirstCoincidence '(a b c d) '(f g c d))
C
[1] (FirstCoincidence '(a b c d) '(f g h i))
()
Определите функцию, преобразующую список в множество, то есть удаляющую
повторения
элемента в списке.
Функция:
(define (List2Set L)
(cond
((null? L)
;если список пуствозвращаем NIL
nil)
((member (car L)(cdr L))
;если голова входит в хвост
выкидываем голову и
;применяем List2Set к хвосту
(List2Set (cdr L)))
(t
;иначеголова не повторяется в
хвосте.Оставляем
;ее в множестве и применяем List2Set к
хвосту
(cons (car L) (List2Set (cdr L))))
)
)
Результат выполнения:
[1] (List2Set '(a b c a b c a b c))
(A B C)
Определите предикат, проверяющий совпадение двух множеств (независимо от
порядка следования элементов).
Функция:
(define (SetEQ X Y)
(cond
((null? X)
(null? Y))
((member (car X) Y)
(SetEQ (cdr X) (delete! (car X) Y)))
(t nil)
)
                                     37

   входящий в оба списка и NIL, если такого элемента нет.
Функция:
(define (FirstCoincidence L1 L2)
      (cond
             ((null? L1) ;NIL – если первый список пуст
                   nil)
             ((member (car L1) L2)               ;если первый элемент
первого
                                                  ;списка входит во второй
                   (car L1))                      ;возвращаем этот элемент
             (t
                                                  ;иначе – применяем функцию
                         к
                                                  ;хвосту первого списка
                   (FirstCoincidence (cdr L1) L2)
             )
      )
)
Результат выполнения:
        [0] (FirstCoincidence '(a b c d) '(f g c d))
        C
        [1] (FirstCoincidence '(a b c d) '(f g h i))
        ()

   Определите функцию, преобразующую список в множество, то есть удаляющую
   повторения элемента в списке.
Функция:
(define (List2Set L)
      (cond
             ((null? L)
                                      ;если список пуст – возвращаем NIL
                   nil)
             ((member (car L)(cdr L))
                                      ;если голова входит в хвост –
выкидываем голову и
                                      ;применяем List2Set к хвосту
                   (List2Set (cdr L)))
             (t
                                      ;иначе – голова не повторяется в
хвосте.Оставляем
                                      ;ее в множестве и применяем List2Set к
             хвосту
                   (cons (car L) (List2Set (cdr L))))
      )
)
Результат выполнения:
        [1] (List2Set '(a b c a b c a b c))
        (A B C)


   Определите предикат, проверяющий совпадение двух множеств (независимо от
   порядка следования элементов).
Функция:
(define (SetEQ X Y)
      (cond
            ((null? X)
                  (null? Y))
            ((member (car X) Y)
                  (SetEQ (cdr X) (delete! (car X) Y)))
            (t nil)
      )