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

16,558

Solution 1

$ 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.)

Solution 2

List.mem is what you are looking for.

Solution 3

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

Share:
16,558
sebster
Author by

sebster

Updated on June 07, 2022

Comments

  • sebster
    sebster almost 2 years

    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.