Lisp Racket-将偶数和奇数整数过滤成两个单独的列表

Lisp Racket-将偶数和奇数整数过滤成两个单独的列表,lisp,racket,Lisp,Racket,函数应该获取一个整数列表,并返回一个包含两个子列表的列表——第一个子列表包含原始列表中的偶数,第二个子列表包含奇数。我的代码完成了任务,但是如果我用一个负整数测试它,比如第二次测试中的-5,我的代码就会忽略它。有没有关于如何修复的想法 (旁注-我知道有偶数、奇数等函数,但对于本任务,我将自己创建它们。) 尝试替换而不是余数 余数将保留答案的符号(-1的余数与您正在检查的值1不匹配) 模返回与分母符号相同的答案。尝试替换而不是余数。 余数将保留答案的符号(-1的余数与您正在检查的值1不匹配) 模返

函数应该获取一个整数列表,并返回一个包含两个子列表的列表——第一个子列表包含原始列表中的偶数,第二个子列表包含奇数。我的代码完成了任务,但是如果我用一个负整数测试它,比如第二次测试中的-5,我的代码就会忽略它。有没有关于如何修复的想法

(旁注-我知道有偶数、奇数等函数,但对于本任务,我将自己创建它们。)

尝试替换而不是
余数

余数将保留答案的符号(-1的余数与您正在检查的值1不匹配)

模返回与分母符号相同的答案。

尝试替换而不是
余数。

余数将保留答案的符号(-1的余数与您正在检查的值1不匹配)


模返回一个与分母符号相同的答案。

你看过函数了吗?负数除以2的提示是负数(所以不是1;)可能的重复你看过函数了吗?负数除以2的提示是负数(所以不是1;)基于@rsm的答案,我在if语句中添加了更多的逻辑——这很有效,但将“余数”转换为“模”是最干净的想法。谢谢大家。基于@rsm的回答,我在if语句中添加了更多的逻辑——这很有效,但将“余数”转换为“模”是最干净的想法。谢谢大家。
(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 '())
"---------------------------------------------"