数字のリストと数字のリストのリストを受け取る関数を 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 を使用する方法がわかりません。この目的。続行するにはどうすればよいですか?
出力を修正するために編集