sebster
sebster

Reputation: 79

Checking if one element is equal to any element in a list in OCaml?

So what I have this list of ints, let's say it is

let a = [14, 22, 47] in

And what I want to do is check if some other identifier is equal to ANY of the elements in the list. I could obviously do:

if (x = 14 || x = 22 || x = 47) then do something

but this seems cumbersome for bigger lists. Is there an easier way in OCaml? I know Python has the "in" operator.

Upvotes: 4

Views: 23731

Answers (3)

Satya Kishore
Satya Kishore

Reputation: 41

You can also create a function as follows:

let rec contains element = function
  | a::c -> if (a = element) then true else (contains element c)   
  | []   -> false

Upvotes: 3

Jackson Tale
Jackson Tale

Reputation: 25842

List.mem is what you are looking for.

Upvotes: 3

Jeffrey Scofield
Jeffrey Scofield

Reputation: 66823

$ ocaml
        OCaml version 4.01.0

# List.mem;;
- : 'a -> 'a list -> bool = <fun>
# List.mem 3 [1;2;3];;
- : bool = true
# List.mem 8 [1;2;3];;
- : bool = false

(I'd suggest reading through the list of functions in the List module. You want to be familiar with all of them.)

Upvotes: 12

Related Questions