Я пытаюсь создать программу, которая определяет, чередуется ли введенный список со знаком.Например, моя программа возвратила бы true, если бы дали список (ы): [-1, 5, -10] или [5, -17, 25].Программа вернет false, если задан список (ы): [-1, -5, 6] или [1, -2, -6].
Я попытался сделать простое выражение cond, которое проверяетзнак первого числа в списке, а затем после проверки второго числа в списке, чтобы убедиться, что первое число было положительным и второе число было отрицательным или первое число было отрицательным, а второе число было положительным.
(define (alternating-signs-in-list? lst)
(cond
[(> (first lst) 0)
(cond [(< (first (rest lst)) 0) (alternating-signs-in-list? (rest lst))])]
[(< (first lst) 0)
(cond [(> (first (rest lst)) 0) (alternating-signs-in-list? (rest lst))])]
[else false]))
Я ожидал, что представленный код будет работать, но встретился с ошибкой, в которой говорилось:
first: ожидается непустой список;дано: пусто
Эта ошибка произошла, когда я сделал следующий ожидаемый чек:
(check-expect (alternating-signs-in-list? (cons 1 (cons -5 (cons 50 empty)))) true).
Почему возникает следующая ошибка и можно ли легко исправить ее, чтобы получить кодначать работать.Спасибо.