2009-05-07 12 views
1

DrScheme組み込み関数 "filter"を使って手伝ってください。組み込みリスト関数 "filter"の使い方

"数字「Max」を消費する「hello」関数を作成し、数字「L」のリストは「Max」より小さい「L」の数字のリストを生成します。

をフォーマットするためのコメントから撮影

編集は、これは私がこれまでのところ、私はハロー機能にマックスを実装する方法がわからない

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

持っているものです。

+0

あなたが今まで行ってきたことと、あなたが立ち往生しているところを私たちに見せてみませんか? – simon

+0

これは私が持っているもので、これまで (定義(小さい?N最大) (指揮 [(>マックスN)] [他の空])) (定義(ハローマックスL) (フィルタを小さくする?L)) Maxを関数helloに実装する方法はわかりません – Ben

+0

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

答えて

1

あなたsmaller?定義を使用して、私はこれはハロー機能への最大の引数の上に閉鎖されるラムダ関数を使用しています

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

のようなもののために行くだろう。したがって、フィルタリングに使用されるλ関数の内部にMaxを埋め込みます。

+0

閉鎖が私に同意していただきありがとうございます。 :-) –

+0

もちろん、「より小さい?」関数は完全に余分です。 – Svante

+0

これは、私が最後に (定義(ハロー最大L) (フィルタ(小さい最大)L)) (定義(小さい最大) (ラムダ(N) ( Ben

0

ヒント:lambdaで無名関数を作成することができます。

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

が編集:もう一つのヒント:(> Max n)はすでにブール値を返します、あなたが囲むcond構造を必要としません。

+0

私の問題は、ラムダ – Ben

+0

のMaxを使用しないと、どうやってそれをやり遂げることができないのかわかりませんが、フィルタ内の述語はひとつだけ消費しますが、私は 'Max'と 'L'どのように回避するか – Ben

+0

関数内でラムダを使うと、その関数のスコープ内のすべてが見えます。 – Svante

関連する問題