Объединить два списка в один - Lisp
Формулировка задачи:
(
defun fun (lst1 lst2)
(
cond
((null lst1) nil)
((null lst2) nil)
(T
(
cons (car lst1)
(
cons (car lst2)
(
cons (fun (cdr lst1) (cdr lst2)) nil)
)
)
)
)
)
)
(print (fun '(a b c d e f g) '(1 2 3 4 5 6 7)))Решение задачи: «Объединить два списка в один»
(defun fun (lst1 lst2) (cond ((null lst1) nil) ((null lst2) nil) (T (cons (list (car lst1)(car lst2)) (fun (cdr lst1) (cdr lst2)))))) ==> fun (fun '(1 2 3 4 5) '(a b c d e)) ==> ((1 a) (2 b) (3 c) (4 d) (5 e))
Объяснение кода листинга программы
В данном коде представлена функция с именем fun, которая принимает два аргумента типа список (lst1 и lst2). Если один из списков (lst1 или lst2) является пустым (т.е. null), то функция возвращает nil. В противном случае, функция возвращает новый список, который получается путем объединения элементов двух списков. Первый элемент нового списка является результатом применения функции car к первому элементу первого списка и второму элементу второго списка. Оставшиеся элементы нового списка получаются путем рекурсивного вызова функции fun с аргументами, полученными путем вызова функции cdr к соответствующим элементам исходных списков. Пример использования функции: (fun '(1 2 3 4 5) '(a b c d e)) Результат выполнения: ((1 a) (2 b) (3 c) (4 d) (5 e))