我正在尝试生成一个不能被我选择的任何数字整除的数字列表,我应该使用 filter
过程,但我不知道如何使用 2 个过程 零?
和余数。
这是我的试验:
(define (remove-divisible lst value)
(filter zero? (remainder lst value)))
或
(define (remove-divisible lst value)
(filter (zero? (remainder value)) lst))
但显然,由于过滤程序的结构,我得到了错误。如何正确使用?
最佳答案
filter
的第一个参数是一个函数,用于决定是保留还是过滤元素。
在您的情况下,对于不能被给定值整除的数字,该函数应返回 #t
,对于可被给定值整除的数字,该函数应返回 #f
。
这是一个辅助函数,用于根据需要生成此类函数:
(define (not-divisible-by divisor)
(lambda (dividend)
(not (zero? (remainder dividend divisor)))))
现在,定义您需要的函数很简单:
(define (remove-divisible lst value)
(filter (not-divisible-by value) lst))
当然,如果您愿意,您可以跳过辅助函数:
(define (remove-divisible lst value)
(filter (lambda (x) (not (zero? (remainder x value)))) lst))
不过,我建议使用更具可读性的方法。
关于list - 如何在Scheme中生成不能被3整除的数字列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53044934/