Я пытаюсь написать некоторый код, который будет проходить по списку и добавлять подобные термины. Я пытаюсь cons
cdr
из списка ввода в нулевой список, а затем просто сравнить car
списка с car
нового списка и пройти вниз по списку, но мой код просто нет не работает Что я тут не так делаю?
(define loop-add
(lambda (l temp outputList)
(if (or (equal? (cdr l) '()) (equal? (pair? (car l)) #f))
outputList
(if (equal? l '())
outputList
(let ((temp (cdr l)))
(if (equal? temp '())
(loop-add (cdr l) outputList)
(if (equal? (cdr (car l)) (cdr (car temp)))
(loop-add l (cdr temp) (cons (append (cdr (car l)) (cdr (car (cdr l)))) outputList))
(loop-add l temp outputList))))))))
но проблема сейчас в том, что в конце она просто станет бесконечным циклом. Мне нужен способ для повторения с входным списком, но с временным значением, являющимся cdr предыдущего временного списка.