Давайте подумаем о том, что делает ваш код.
Прежде всего, избавиться от if
, это необязательно в предложении cond
. Далее у вас есть некоторые не-схема функции вызова происходит:
((> (car(cdr(lst))) car(lst))
Должно быть:
((> (car (cdr lst)) (car lst))
Теперь вы обычно не используют apply
в такого рода образом. Вместо этого я бы использовал рекурсию.
Так что:
(apply increasing? cdr(lst)))
становится:
(ordered (cdr lst)))
Подумайте о том, что это делает, я проверяю, если остальная часть списка упорядочивается, и если в какой-то, где это не так, это выражение будет оцениваться как ложное, а остальное выражение тоже будет.
Далее мы хотим, чтобы проверить в случае, что этот конкретный экземпляр не сортируется так:
(else #f))
отлично.
Всего:
(define (ordered? lst)
(cond ((null? lst) #t)
((eq? (length lst) 1) #t)
((> (car (cdr lst)) (car lst))
(ordered? (cdr lst)))
(else #f))
)
это дает мне ошибку несвязанной переменной упорядоченных, так как я не определяло заказал. поэтому я меняю заказы? но я получил еще одну ошибку, говорящую «автомобиль: неправильный тип аргумента». – sunnysmiling
О, да, вам также нужно беспокоиться о списках одноэлементных ... Я обновил все. – Dair