OCaml List.mem 在成对列表中搜索元素

OCaml List.mem to search element in list of pair

我有这个问题:

let list  = [(1,2);(2,3);(1,4);(5,0)];;
List.mem (1,2) list;;
- : bool = true

但是我需要修改此函数以在列表的一对元素与 "find parameter" 匹配时具有 "True/False" 例如

List.mem (1,_) list;;
- : bool = true

或者

List.mem (10,_) list;;
- : bool = false

您可以使用 List.exists,它接受一个谓词函数和 returns truefalse 是否匹配列表的元素:

# let list  = [(1,2);(2,3);(1,4);(5,0)];;
val list : (int * int) list = [(1, 2); (2, 3); (1, 4); (5, 0)]
(* you'll probably want to find a better name *)
# let exists_left list value = List.exists (fun (x, _) -> x = value) list;;
val exists_left : ('a * 'b) list -> 'a -> bool = <fun>
# exists_left list 1;;
- : bool = true
# exists_left list 100;;
- : bool = false

List.mem_assoc就是你要的功能