我需要创建一个函数,用来接收一个数字列表,并删除所有小于10的数字,然后输出一个新的列表。
到目前为止,我已经有了这个函数,但是,它仍然不能删除小于10的数字。
#lang racket
(define less-than10(lambda (x)
(for/list ([i x] #:when (lambda (x) (< x 10))) i)))
(less-than10 '(1 2 3 4 11))
然而,它仍然没有删除小于10的数字。它只是输出了一个完全相同的列表。有什么帮助吗?
你需要将谓词应用到绑定循环变量上 i
还请注意,我已经把谓语翻转了。
#lang racket
(define less-than10
(lambda (x)
(for/list ([i x] #:when ((lambda (x) (> x 10)) i)) i)))
(less-than10 '(1 2 3 4 11))
; => '(11)
一个更自然的版本应该使用 filter
:
(define less-than10.v2
(lambda (x)
(filter (lambda (x) (> x 10)) x)))
(less-than10.v2 '(1 2 3 4 11))
; => '(11)