«Стандартный» способ сделать это с помощью процедуры filter
. Он принимает предикат (процедура, указывающая, является ли условие истинным) и список, и создает новый список, содержащий те элементы во входном списке, которые удовлетворяют предикату. Например, мы можем создать список, который содержит только четные числа из входного списка чисел, например так:
(filter even? '(0 1 2 3 4 5 6))
;; => (0 2 4 6)
В вашем случае нет «встроенного» предиката для проверки, является ли число меньше чем 10, но мы можем легко определить одно:
(define (<10 n)
(< n 10))
и затем отфильтровать любой список, используя его:
(filter <10 '(1 4 15 23 25 4 8))
;; => (1 4 4 8)
В этом случае, однако, я думаю, что большинство предпочло бы использовать lambda
вместо:
(filter (lambda (n) (< n 10))
'(1 4 15 23 25 4 8))
;; => (1 4 4 8)
Надеюсь, это поможет!