2009-05-07 6 views
1

verwenden Bitte helfen Sie mir bei der Verwendung der DrScheme-Funktion "Filter".wie eingebaute Listenfunktion "Filter"

"erstellen Sie eine Funktion" Hallo ", die eine Zahl" Max "verbraucht, und eine Liste von Zahlen" L ", eine Liste von Zahlen in" L ", die kleiner als" Max "sind."

bearbeiten aus den Kommentaren Genommen

für die Formatierung ist es das, was ich

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

Ich weiß nicht, wie Max in die Funktion Hallo zu implementieren.

+0

Warum zeigen Sie uns nicht, was Sie bisher gemacht haben und wo Sie stecken bleiben? – simon

+0

das ist, was ich bisher (define (kleiner? N Max) (Ltg [(> Max n) n] [sonst leer])) (define (Hallo Max L) (filter kleiner? L)) ich weiß nicht, wie man Max in die Funktion Hallo – Ben

+0

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

Antwort

1

Ihre smaller? Definition verwenden, würde ich für etwas gehen wie

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

Dieser verwendet eine Lambda-Funktion, die auf die hallo-Funktion ein Verschluss über das Max-Argument ist. So "eingebettet" Max innerhalb der Lambda-Funktion für die Filterung.

+0

Vielen Dank für die Vereinbarung mit mir darüber, was eine Schließung ist . :-) –

+0

Natürlich ist die 'kleinere?' Funktion völlig überflüssig. – Svante

+0

das ist, was mit i am Ende am Ende (define (Hallo Max L) (Filter (kleinerer Max) L)) (define (kleinerer Max) (lambda (n) ( Ben

0

Hinweis:

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

bearbeiten: Noch ein Hinweis: Sie können eine anonyme Funktion mit lambda erstellen (> Max n) gibt bereits eine boolean, Sie keine umschließenden cond Struktur brauchen.

+0

mein Problem ist, dass ich nicht sicher bin, wie ich es tun kann, ohne Max in der Lambda – Ben

+0

oder vielmehr, das Prädikat innerhalb Filter verbraucht nur eine Sache, aber ich habe zwei Dinge, 'Max' und 'L', so weiß ich nicht wie man das umgehen kann – Ben

+0

Wenn Sie das Lambda innerhalb einer Funktion verwenden, sieht es alles im Funktionsumfang dieser Funktion. – Svante