Racket 删除列表中小于10的数字的函数

Racket 删除列表中小于10的数字的函数,racket,Racket,我需要创建一个函数,它接受一个数字列表,删除所有小于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,还要注意,我已经翻转了

我需要创建一个函数,它接受一个数字列表,删除所有小于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)
更自然的版本将使用过滤器:

(define less-than10.v2
  (lambda (x)
    (filter (lambda (x) (> x 10)) x)))

(less-than10.v2 '(1 2 3 4 11))
; => '(11)