Я пытаюсь дублировать все записи в списке с помощью схемы:Схема дублирующих записей в списке
Это код, у меня есть:
(define double
(lambda (l)
(cond [(null? l) '()]
[(not (pair? l)) (list l l)]
[else (cons (double (car l)) (double (cdr l)))])))
Если мой вход (double '(a((b)(c d)(((e))))))
, я получаю назад ((a a) (((b b)) ((c c) (d d)) ((((e e))))))
.
Я хочу получить (a a((b b)(c c d d)(((e e)))))
.
Как мне это сделать? Если я заменил cons
на append
или list
, это еще больше. Я могу использовать только команды, которые вы видите там, и такие команды, как let
(и другие варианты let), map
, atom
, if
и другие логические операторы.
Примечание: Вы хотите, чтобы дублировать элементы в дереве (не список). – soegaard
Что вы имеете в виду? –
Список слов подразумевает один уровень. Дерево слов подразумевает, что вы хотите дублировать элементы на всех уровнях. – soegaard