Вам не хватает скобки во втором условии.Это заставляет оператор «<» работать не с двумя, а с тремя элементами.Правильный код выглядит следующим образом: </p>
(define (minim lst)
(cond ((null? (cdr lst)) (car lst))
((< (car lst) (minim (cdr lst))) (car lst))
(else (minim (cdr lst)))) )
(minim '(3 4 2 9 3 8))
Одно замечание: этот код не является хвостовой рекурсивной .Он проходит до конца списка и начинает сравнивать его (т. Е. Последний элемент сравнивается с предыдущим и т. Д.)текущий минимум, затем продолжайте обработку более короткого списка каждый раз.Если вы пойдете этим путем, вам понадобится дополнительный аргумент функции, содержащий текущий минимум (это эквивалентно левому сгибу, а не правому сгибу, который вы реализовали).