(define (proper-divisor? n m)
(eq? (modulo n m) 0))
(define (1..10)
list (iota 10 1))
(define (amount-of-proper-divisors n numbers)
(length (filter (lambda (x) proper-divisor? n x) numbers)))
如何过滤掉不合适的除数? 尝试:
(filter (lambda (x) proper-divisor? n x) numbers))
ps.1:发现了一个类似的问题:Language Scheme: find the sum of proper divisors 哪个版本更好?将过滤器与谓词和列表生成器或链接问题中的解决方案放在一起?
答案 0 :(得分:2)
问题似乎是你错过了一套parens:
(filter (lambda (x) (proper-divisor? n x)) numbers)
^ ^
here and here
没有parens的表达:
(lambda (x) proper-divisor? n x)
与:
相同(lambda (x) x)