检查一个元素是否等于OCaml中列表中的任何元素?

时间:2014-01-26 22:16:04

标签: list ocaml

所以我有这个整体列表,让我们说它是

let a = [14, 22, 47] in

我想要做的是检查一些其他标识符是否等于列表中的任何元素。我显然可以做到:

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

但对于较大的列表来说这似乎很麻烦。在OCaml中有更简单的方法吗?我知道Python有“in”运算符。

3 个答案:

答案 0 :(得分:5)

$ 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

(我建议阅读列表模块中的功能列表。您希望熟悉所有这些功能。)

答案 1 :(得分:2)

List.mem正是您要找的。

答案 2 :(得分:1)

您还可以按如下方式创建功能:

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