Прежде чем я начну: ДА, это домашнее задание из колледжа. Прежде чем мне скажут, что я ленив и злой: эта часть домашнего задания заключалась в преобразовании двух функций, которые у нас уже были, это 6.
(define (flatten-list a-list)
(cond ((null? a-list) '())
((list? (car a-list))
(append (flatten-list (car a-list)) (flatten-list (cdr a-list))))
(else (cons (car a-list) (flatten-list (cdr a-list))))))
Как вы можете догадаться, функция выравнивает список, даже если он вложен. Моя конкретная проблема с преобразованием заключается в условии (list? (Car a-list)), в котором я выполняю два рекурсивных вызова. Я уже делал фибоначчи, что я могу сделать, просто имея два «акуммулятора» на хвостовой рекурсии. Однако мой разум еще не обучен этому, чтобы знать, как это должно происходить.
Я был бы признателен, если бы мне дали подсказки, а не результат. Спасибо!