Я пытаюсь написать функцию, чтобы проверить, является ли список целых чисел строго возрастающим или нет. У меня есть следующее:
(: ascending : (Listof Integer) -> Boolean)
;; test whether a list of integers is *strictly* ascending
(define (ascending x)
(match x
('() #f)
((cons hd tl)
(cond
((< hd (second x)) #t)
((> hd (second x)) #f)
(else (ascending tl))))))
Он работает для первых трех проверок, но не для последних трех, как указано ниже:
(check-expect (ascending (list 1 2 3 4 5)) #t)
(check-expect (ascending (list 5 4 3 2 1)) #f)
(check-expect (ascending (list 5 1 2 3 4)) #f)
(check-expect (ascending (list 1 2 3 5 4)) #f)
(check-expect (ascending (list 1 3 2 4 5)) #f)
(check-expect (ascending (list 1 2 3 4 1)) #f)
Я не понимаю, что я делаю неправильно, потому что я должен сделать следующее:
- Проверьте, не пуст ли список, и выдайте ошибку. Сделанный. Поставить галочку.
- Если в списке только два элемента, сравните
hd
иtl
и еслиhd
‹tl
, то#t
, если нет, то#f
. Готово Отметьте. - Другой выполняет два сравнения для всего списка, пока не будет получено значение
#t
или#f
.
Пожалуйста помоги.