F# 如果列表中没有任何内置函数,如何查看int是否存在?

F# 如果列表中没有任何内置函数,如何查看int是否存在?,f#,F#,首先编写一个名为mem的函数,给定一个整数和一个整数列表,如果该整数在列表中至少出现一次,则返回true,否则返回false。这是我的第一个问题,我不想使用任何内置函数 我的第二个问题: 创建两个函数,每个函数将两个整数列表作为参数,并分别返回作为集合的列表的并集和交集。您可能希望使用以前定义的成员函数。列表不需要排序,但不能有任何重复项 如果没有任何内置函数,我没有ide如何解决这个问题 有什么解决办法吗?如果你想学习F,那么你应该尝试学习它,而不是询问StackOverflow。然而,这两个

首先编写一个名为mem的函数,给定一个整数和一个整数列表,如果该整数在列表中至少出现一次,则返回true,否则返回false。这是我的第一个问题,我不想使用任何内置函数

我的第二个问题: 创建两个函数,每个函数将两个整数列表作为参数,并分别返回作为集合的列表的并集和交集。您可能希望使用以前定义的成员函数。列表不需要排序,但不能有任何重复项

如果没有任何内置函数,我没有ide如何解决这个问题
有什么解决办法吗?

如果你想学习F,那么你应该尝试学习它,而不是询问StackOverflow。然而,这两个问题听起来都是一个合理的问题,实际上可以向社区的其他人展示一些基本的F,所以这里有一些可能的解决方案

成员测试可以作为递归函数实现。这样做的想法是,您遍历一个列表,如果找到所需的值,则返回true。如果找到另一个值,则需要递归处理列表的其余部分。如果到达末尾并找到一个空列表,则返回false,因为空列表显然不包含您要查找的值:

let rec mem value = function
 | x::xs when x = value -> true
 | x::xs -> mem value xs
 | [] -> false
如何使用mem实现联合?联合将包含一个列表中的所有元素,以及其他列表中尚未包含在第一个列表中的所有元素,您不希望创建重复项。所以,联合列表[]将成为列表。如果第二个列表是非空的x::xs,则需要检查元素x是否在第一个列表中。如果是,则要跳过它,否则将其添加到结果中:

let rec union list1 list2 = 
  match list2 with
  | [] -> list1
  | x::xs when mem x list1 -> union list1 xs
  | x::xs -> x::(union list1 xs)

这不是最有效的解决方案,因为它不使用尾部递归,但它是最简单的解决方案。

您好,请不要指望我们解决您的家庭作业。你应该先表现出你的努力。托马斯,我在做作业方面遇到了麻烦。你介意我发邮件给你看一下吗-@丹尼尔:当然可以,没问题。请确保电子邮件以亲爱的先生开头,否则它可能会在我的垃圾邮件文件夹中结束。但说真的,我不知道如何处理家庭作业问题——即使在阅读之后——如果人们问一个家庭作业问题,他们最终会在某个地方得到答案。这一个至少是基本F递归的一个合理例子……亲爱的先生,我认为你的回答和推理都很好。向你的同事表示热烈的问候。我做了类似这样的事情‘让y=[3;4;5;6]让x=4让mem x y=List.find fun elem->elem=xy让intersect x y=Set.intersect Set.ofList x Set.ofList y让union x y=List.append x y |>Seq.distinct |>List.ofSeq’它可以工作,但我不能使用内置函数