我是OCaml的新手,并努力与比赛合作。我想编写一个带有列表和值的函数,然后如果值在该列表中则返回true,否则返回false。这是我的想法,但我正在努力让它发挥作用。
let rec contains xs x =
match xs with
| [] -> false
| z :: zs ->
match x with
| z -> true
| _ -> contains zs x
答案 0 :(得分:3)
当您使用标识符作为模式时,您将匹配的值绑定到该标识符。即
match x with
| z -> true
会将x
的值绑定到名称z
。您还会收到有关z
和_
分支未使用的警告。
你也不需要第二次模式匹配,因为它可以折叠成第一种:
let rec contains xs x =
match xs with
| [] -> false
| z :: _ when z = x -> true
| _ :: zs -> contains zs x