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

UptoLike

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

38
)
Результат выполнения:
[3] (SetEQ '(a b c d) '(a b c d))
#T
[4] (SetEQ '(a b c d) '(d c b a))
#T
[5] (SetEQ '(a b c d) '(e c b a))
()
Определите функцию, проверяющюю, является ли одно множество
подмножеством другого.
Функция:
(define (SubSet X Y)
(cond
((null? Y)
(null? X))
((null? X)
t)
((member (car X) Y)
(SubSet (cdr X) Y))
(t nil)
)
)
Результат выполнения:
[1] (SubSet '() '(a b c))
#T
[2] (SubSet '(c d) '(a b c d))
#T
[3] (SubSet '(d e) '(a b c d))
()
Определите предикат, проверяющий отсутствие общих элементов
(отсутствие пересечения) двух множеств.
Функция:
(define (NonIntersect X Y)
(cond
((null? X)
t)
((member (car X) Y)
nil)
(t
(NonIntersect (cdr X) Y))
)
)
Результат выполнения:
[1] (NonIntersect '(e f) '(a b c d))
#T
[2] (NonIntersect '() '(a b c d))
#T
[3] (NonIntersect '(a b c d) '())
#T
[4] (NonIntersect '(a b c d) '(d e))
()
[5] (NonIntersect '(a b c d) '(e f))
#T
Определите FUNCALL через функционал APPLY. (Примечание: В Микро-ЛИСПе
встроенные функции
FUNCALL и &REST отсутствуют. Из за этого имеется
возможность определить FUNCALL только для фиксированного количества
                                    38

)
Результат выполнения:
       [3] (SetEQ '(a b c d) '(a b c d))
       #T
       [4] (SetEQ '(a b c d) '(d c b a))
       #T
       [5] (SetEQ '(a b c d) '(e c b a))
       ()

   Определите функцию, проверяющюю, является ли одно множество
   подмножеством другого.
Функция:
(define (SubSet X Y)
      (cond
             ((null? Y)
                   (null? X))
             ((null? X)
                   t)
             ((member (car X) Y)
                   (SubSet (cdr X) Y))
             (t nil)
      )
)
Результат выполнения:
        [1] (SubSet '() '(a b c))
        #T
        [2] (SubSet '(c d) '(a b c d))
        #T
        [3] (SubSet '(d e) '(a b c d))
        ()


      Определите предикат, проверяющий отсутствие общих элементов
      (отсутствие пересечения) двух множеств.
Функция:
(define (NonIntersect X Y)
      (cond
             ((null? X)
                   t)
             ((member (car X) Y)
                   nil)
             (t
                   (NonIntersect (cdr X) Y))
      )
)
Результат выполнения:
        [1] (NonIntersect '(e f) '(a b c d))
        #T
        [2] (NonIntersect '() '(a b c d))
        #T
        [3] (NonIntersect '(a b c d) '())
        #T
        [4] (NonIntersect '(a b c d) '(d e))
        ()
        [5] (NonIntersect '(a b c d) '(e f))
        #T


  Определите FUNCALL через функционал APPLY. (Примечание: В Микро-ЛИСПе
  встроенные функции FUNCALL и &REST отсутствуют. Из за этого имеется
  возможность определить FUNCALL только для фиксированного количества