Попытка рекурсивного добавления, что я делаю неправильно в Схеме? - PullRequest
0 голосов
/ 10 февраля 2020

Попытка рекурсивного добавления каждого элемента из списка a в список c. В настоящее время добавляются только один элемент. Что я делаю неправильно? Я пытаюсь перевернуть список. Но в настоящее время застряло понимание того, как даже добавить список в другой список.

(define a '(1 2 3))
(define c '())

(define fun
    (lambda (() l1) l1
            (l l1) (append l1 (car l)) (fun (cdr l) l1)
))

(fun a c)

Я использую схему, подобную интерпретатору, где я не могу использовать какие-либо новые встроенные функции, кроме функций списка.

1 Ответ

0 голосов
/ 10 февраля 2020

Вам нужно использовать

(lambda (l l1)
 (if (null? l)
     l1
     (append l1 (car l)) (fun (cdr l) l1)))

, то, что вы написали, выглядит так, как будто оно работало бы, если бы существовала возможность сопоставления с образцом, но наша лямбда была более базовой c и не сопоставлялась с образцом.

...