2009-05-07 2 views
1

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

«создать функцию« привет », которая потребляет число« Макс »и список чисел« L », выдает список чисел в« L », которые меньше« Макс ».

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

это то, что я до сих пор

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

Я не знаю, как реализовать Макса в функции привет.

+0

Почему бы вам не показать нам, что вы сделали до сих пор, и где вы застреваете? – simon

+0

это то, что я до сих пор (определить (меньше? П Макс) (конд [(> Макс п) п] [еще пусто])) (определить (привет Max L) (фильтр меньше? L)) Я не знаю, как реализовать Max в функции hello – Ben

+0

(qrsvar (uryyb znk y) (svygre (ynzoqn (k) (> znk k)) y)) :-P –

ответ

1

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

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

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

+0

Спасибо, что согласились со мной о том, , :-) –

+0

Конечно, функция 'small?' Совершенно лишняя. – Svante

+0

это то, что я в конечном итоге с в конце (определить (Привет Макс L), (фильтр (меньше макс) Л)) (определить (меньше макс) (лямбда (п) (<п Макс))) – Ben

0

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

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

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

+0

моя проблема в том, что я не уверен, как я могу это сделать, не используя Max в lambda – Ben

+0

, или, скорее всего, внутренний фильтр предиката потребляет только одно, но у меня есть две вещи: «Макс» и «L», поэтому я не знаю как работать с этим – Ben

+0

Если вы используете лямбда внутри функции, она видит все в области этой функции. – Svante

Смежные вопросы