如何检查元素是f#中的成员?

时间:2018-10-20 16:05:41

标签: f#

我正在尝试将列表x与列表S进行比较,如果列表x具有S的全部或某些元素,则该值为true,否则为false。如果x和S为空,则也为false。我正在实现以下代码,无法编译,希望找到解决方案。欣赏它。谢谢:

let rec isMember x S =
match S with
|[] , [] -> false
|_ , [] -> true
|[] , _ -> false
|e1::rest1, e2::rest2 -> (e1=e2) || (isMember rest1 rest2)

1 个答案:

答案 0 :(得分:0)

您的匹配项应包括两个列表(是一个元组),如下所示:

match x, S with

...尽管isMember的实现方式只有在x的元素多于SS的元素完全相同的情况下才是正确的x中的顺序相同。您可能要使用List.contains

顺便说一句,在使用大写/小写时请尽量保持一致,驼峰式大小写是F#中的惯例