Ocaml是列表列表中的元素

时间:2013-04-21 13:27:44

标签: ocaml

我创建了一个列表列表,例如:

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];;

我收到警告,此功能似乎无效。

2 个答案:

答案 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)的顺序。