1

I have created a list of lists, for example:

list1 = [[1; 2]; [3; 4]]

I'm trying to create a function "is_element", which would return true if intiger is in the list, and false otherwise.

How should it work:

is_element list1 4;;
- : bool = true

What I tried:

let rec is_element x = function
[[]] -> false
| [(a:int)::l] -> (a:int) == x || is_element x [l];;

I do get a warning and this function doesn't seem to work.

4

2 回答 2

5

您可以使用List.mem来检查元素是否是列表的一部分,并且可以使用 List.exists来检查列表中的任何元素是否满足谓词。结合这两者,您可以检查列表列表是否包含您的元素。

于 2013-04-21T14:00:06.193 回答
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)。

于 2013-04-21T13:56:37.037 回答