Функция, которая удаляет числа меньше 10 в списке - PullRequest
0 голосов
/ 04 мая 2020

Мне нужно создать функцию, которая берет список чисел, удаляет все числа меньше 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. Он просто выводит точно такой же список. Любая помощь?

1 Ответ

1 голос
/ 04 мая 2020

Вам необходимо применить предикат к связанной переменной l oop 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)
...