Итерация по списку с помощью для l oop (Ракетка) - PullRequest
0 голосов
/ 30 апреля 2020

Мне нужна помощь в написании функции, которая использует для l oop, чтобы перебрать список чисел и возвращает все числа, которые меньше 10. Я понятия не имею, с чего начать, если кто-нибудь может помочь даже с запуском Точка я был бы признателен.

Спасибо :)

1 Ответ

2 голосов
/ 01 мая 2020

«Стандартный» способ сделать это с помощью процедуры 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)

Надеюсь, это поможет!

...