我创建了一个列表列表,例如:
list1 = [[1; 2]; [3; 4]]
我正在尝试创建一个函数“is_element”,如果intiger在列表中,则返回true,否则返回false。
应该如何运作:
is_element list1 4;;
- : bool = true
我尝试了什么:
let rec is_element x = function
[[]] -> false
| [(a:int)::l] -> (a:int) == x || is_element x [l];;
我收到警告,此功能似乎无效。
答案 0 :(得分:5)
您可以使用List.mem检查元素是否属于列表,您可以使用 List.exists检查列表中的任何元素是否满足谓词。 结合这两个,您可以检查列表列表是否包含您的元素。
答案 1 :(得分:4)
let rec is_element x lst =
let rec aux y = function
[] -> false
| a::l -> a==y || aux y l
in
match lst with
[] -> false
| a::l -> aux x a || is_element x l;;
您可以使用辅助函数检查列表中是否包含元素,然后将此函数应用于列表列表的元素。 然后你应该用
调用这个函数is_element 4 list1;;
或颠倒参数(x和lst)的顺序。