Функция должна принимать список целых чисел и возвращать список, содержащий два подсписка: первый содержит четные числа из исходного списка, а второй содержит нечетные. Мой код выполняет свою работу, но если я проверю его с отрицательным целым числом, например -5 во втором тесте, мой код просто проигнорирует его. Любые идеи о том, как исправить?
(Примечание: я знаю, что есть функции для четных, нечетных и т. д., но для этого задания я должен создать их сам.)
(define (segregate lst)
(list(pullEven lst)(pullOdd lst)))
(define (pullEven lst)
(if (empty? lst)
'()
(if (isEven (first lst))
(cons (first lst) (pullEven (rest lst)))
(pullEven (rest lst)))))
(define (pullOdd lst)
(if (empty? lst)
'()
(if (isOdd (first lst))
(cons (first lst) (pullOdd (rest lst)))
(pullOdd (rest lst)))))
(define (isEven x)
(if (equal? (remainder x 2) 0) #t #f)
)
(define (isOdd x)
(if (equal? (remainder x 2) 1) #t #f)
)
;tests
"---------------------------------------------"
"Segregate Tests"
(segregate '(7 2 3 5 8))
(segregate '(3 -5 8 16 99))
(segregate '())
"---------------------------------------------"
partition
? - person Alex Knauth   schedule 03.10.2017