私はこのコードを作成しました:
let rec foo1 z = function
| [] -> []
| x::xs when x = z -> x::(foo1 x xs)
| x::xs -> foo1 z xs
int -> int -> bool
しかし、最初の引数としてタイプの新しい関数を使用して、この関数のより複雑なバージョンが必要です。この関数は、リストのすべての要素に対して整数引数をテストします。演算子が適用されたときに true を返す要素は、戻りリストに配置する必要があります。
例:
let eq x y = x = y
let lt x y = x < y
let gt x y = x > y
foo2 eq 2 [1;2;4;2;5] => [2;2]
foo2 lt 2 [1;2;4;2;5] => [4;5]
foo2 gt 2 [1;2;4;2;5] => [1]