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 true
或 false
是否匹配列表的元素:
# 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
就是你要的功能
我有这个问题:
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 true
或 false
是否匹配列表的元素:
# 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
就是你要的功能