Странное поведение append - Lisp
Формулировка задачи:
Как многие из Вас (я надеюсь) знают, "append" делает из двух списков один.
Вот код данной процедуры:
Вот собственно сама загвостка:
Почему, если я передаю в append списки "напрямую", то всё норм, а если передаю списки из другого списка, с помощью car и cdr, то он оборачивает в дополнительные скобки?!
(define (append list1 list2) (if (null? list1) list2 (cons (car list1) (append (cdr list1) list2))))
(define x (list (list 1 2) (list 3 4))) (append (list 1 2) (list 3 4)) Выводит: '(1 2 3 4) (append (car x) (cdr x)) Выводит: '(1 2 (3 4))
Решение задачи: «Странное поведение append»
textual
Листинг программы
(append '(1 2 3) '(4 5 6) '(7 8 9) '(a b c)) ==> (1 2 3 4 5 6 7 8 9 A B C)
Объяснение кода листинга программы
В данном коде происходит операция объединения (append) нескольких списков в один. В данном случае, четыре списка:
- '(1 2 3)
- '(4 5 6)
- '(7 8 9)
- '(a b c) Объединяются в один список: '(1 2 3 4 5 6 7 8 9 A B C'
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д