как использовать встроенную функцию списка «фильтр» - PullRequest
1 голос
/ 07 мая 2009

Пожалуйста, помогите мне с использованием встроенной функции DrScheme «фильтр».

"создать функцию" привет ", которая использует число 'Max', и список чисел 'L', создать список чисел в 'L', которые меньше, чем 'Max'.

edit Взято из комментариев для форматирования

это то, что у меня есть

(define (smaller? n Max) 
  (cond 
    [(> Max n) n] 
    [else empty])) 
(define (hello Max L) 
  (filter smaller? L))

Я не знаю, как внедрить Макса в функцию hello.

Ответы [ 2 ]

1 голос
/ 08 мая 2009

Используя ваше определение smaller?, я бы выбрал что-то вроде

(define (hello Max L)
  (filter (lambda (n) (smaller? n Max)) L))

При этом используется лямбда-функция, которая является замыканием аргумента Max для функции hello. Таким образом, он «внедряет» Max в лямбда-функцию, используемую для фильтрации.

0 голосов
/ 08 мая 2009

Подсказка: вы можете создать анонимную функцию с помощью lambda:

(lambda (x) (have-fun-with x))

edit: Еще один совет: (> Max n) уже возвращает логическое значение, вам не нужна включающая cond структура.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...