Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List 两个列表F的交集#_List_F# - Fatal编程技术网

List 两个列表F的交集#

List 两个列表F的交集#,list,f#,List,F#,我正在寻找一个函数,它在两个列表之间求交并创建一个新的列表,我有这个函数:让intersect x y=Set.intersect(Set.ofList x)(Set.ofList y)做我想做的事情,但我不想使用F#中的任何内置函数,最好使用库中的东西,但如果你做不到的话 如果我们假设输入列表已排序(使用List.sort或编写您自己的): 我同意在这种情况下,将列表转换为集合是不好的 下面是另一个不转换为集合但使用内置函数的替代方案: open System.Linq let inters

我正在寻找一个函数,它在两个列表之间求交并创建一个新的列表,我有这个函数:
让intersect x y=Set.intersect(Set.ofList x)(Set.ofList y)
做我想做的事情,但我不想使用F#

中的任何内置函数,最好使用库中的东西,但如果你做不到的话

如果我们假设输入列表已排序(使用
List.sort
或编写您自己的):


我同意在这种情况下,将列表转换为集合是不好的

下面是另一个不转换为集合但使用内置函数的替代方案:

open System.Linq

let intersect (xs:'a seq) (ys: 'a seq) = xs.Intersect(ys)

您可以使用
FSharpList

调用此函数。使用内置的东西到底有什么问题?它将比您自己编写的任何东西都要好得多。此外,您编写的任何内容都将复制它如果忽略列表中的顺序,您可以将其视为多集,而不是集。您希望如何处理列表中多次出现的元素?是否可以使用“并行”匹配(即同时在a和b上进行匹配)进行改进?@user1838768:您是否使用排序列表对其进行了测试?
open System.Linq

let intersect (xs:'a seq) (ys: 'a seq) = xs.Intersect(ys)