5) front(q) – возвращает первый элемент очереди q.
Определенной Вами очереди должна соответствовать следующая диаграмма списочных ячеек: на этой диаграмме car является последним элементом очереди, а cdr является содержимым очереди, представленным в виде списка.
Примеры:
>(setf queue (make-queue)) ;создали очередь queue
#l=(#l#)
>(endqueue 'a queue) ;добавили элемент 'a в очередь
(#l=(A) . #l#)
>(endqueue 'b queue) ;добавили элемент 'b в очередь
(#l=(B) A . #l#)
>(front queue) ;отобразили первый элемент очереди
A
>(decqueue queue) ;удалили первый элемент
(#l=(A) . #l#)
>(queue-contents queue)
(B) ;отобразили содержимое очереди queue
Нарисовать диаграммы списочных ячеек, соответствующих списочным структурам, получаемым после выполнения каждого из приведенных в примерах выражений.
Определите функциональный предикат each1(p l), который истинен в том и только том случае, когда, являющийся функциональным аргументом предикат p истинен для всех элементов списка l.
Примеры:
>(each1 'atom '(a b c))
T
>(each1 'numberp '(1 2 a 3))
NIL
2.Определите функцию (count-if p l), подсчитывающую количество элементов списка l, которые обладают свойством, наличие которого проверяется предикатом p.
Примеры:
>(count-if 'numberp '(1 2 a 3 b c))
3.Напишите программу генератора чисел Фибоначчи (1, 1, 2, 3, 5, ...).
4.Напишите функцию, которая получает матрицу в качестве аргумента и возвращает транспонированную матрицу. (Ваша функция должна работать с матрицами любой размерности). Транспонирование матрицы – это результат отображения матрицы относительно ее диагонали.
Пример:
>(transpose '((a b c) (d e f) (g h i)))
((A D G) (B E H) (C F I))
Для выполнения єтого задания используйте функцию mapcar. Матрицу можно представить как список списков.
5.Определите форму, соответствующую синтаксису оператора IF Фортрана: (FIF тест отр нуль полож).