Лабораторна робота №5
Застосування функціоналів.
Ціль роботи: засвоїти розробку програм з застосовуючими функціоналами.
Задача: написати програму, виконуючу необхідні дії. В програмі використати функціонали EVAL, FUNCALL, APPLY.
Приклади:
1. Построїти список результатів виконання функцій із заданого списку S з параметрами X Y:
(defun p(S X Y )(COND ((NULL S) NIL)
(T(CONS (FUNCALL (CAR S) X Y)(P (CDR S) X Y))) ) )
2. Функція зі списку функцій L, з параметрами X Y, яка приймає при даному значенни аргументів задане значення: А.
(DEFUN CC(L X Y А)(COND ((NULL L ) NIL)
((= А (CAR (P L X Y )) ) (CAR L ))
(T( CC (CDR L) X Y А)) )).
Зі списка функцій відібрати в окремий список ті, результати
виконання котрих при заданому аргументі розташовані за убиванням.
(setq l (list 'f1 'f2 'f3 'f4 'f5 'f6 'f7))
(defun f1(x) (+ x 4) )
(defun f2(x) (+ x 5) )
(defun f3(x) (+ x 2) )
(defun f4(x) (+ x 1) )
(defun f5(x) (+ x 6) )
(defun f6(x) (+ x 5) )
(defun f7(x) (+ x 7) )
(defun ff(L y z) (cond ( (NULL L) nil)
( (<= (funcall (car L) y) z)
(cons (funcall (car L) y) (ff (cdr L) y (funcall (car L) y))))
( t (ff (cdr L) y z) )) )
(defun s (x) (cons (funcall (car L) x)( ff (cdr l) x (funcall (car L) x))) )
Результати роботи програми:
> (s 1)
(5 3 2)
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.