0

数字のリストと数字のリストのリストを受け取る関数を Intermediate Student Language (Racket) で作成するタスクが課せられています (演習 8) 。各リストは同じ長さです。最初のリスト ブレークポイントと 2 番目の LoR (行のリスト) に名前を付けます。この関数は map を使用して定義する必要があり、LoR の各行をフィルタリングして、LoR の n 番目の行よりも大きい数値のみがブレークポイントの n 番目の値よりも大きい値のみを含むようにする必要があります。わかりやすくするための例を次に示します。

(define breakpoints (list 7 2 15))

(define LoR (list (list 3 25 13) 
                  (list 1 2 11) 
                  (list 22 4 8)))

出力します...

(list (list 25 13) (list 11) (list 22))

マップを使わずにこれを行うのは問題ありません。その意味では問題は理解できますが、マップの使用方法を理解するのに苦労しています。行のリストが空でない場合、(フィルター処理された最初の行) を (残りのブレークポイントと LoR を使用した関数の再帰呼び出し) に変換するという意味で再帰的に考えていました。

(define (parallel-filter breakpoints LoR)
  (cond((empty? breakpoints) empty)
       (else (cons ...
                   (parallel-filter (rest breakpoints) (rest LoR))))))

ただし、関数を正しく機能させる map ステートメントで楕円を置き換える方法がわかりません。私が理解しているように、map の最初のパラメーターは 1 つのパラメーターの関数でなければならず、map を使用する方法がわかりません。この目的。続行するにはどうすればよいですか?

出力を修正するために編集

4

1 に答える 1