【发布时间】:2017-09-04 06:10:49
【问题描述】:
我需要在 SML 中编写一个函数,该函数将任意数量的列表作为输入并返回所有给定集合的交集。例如,函数需要有如下形式:
multiSetIntersection([s1,s2,s3,s4]) = (Intersection of s1,s2,s3,s4)
我已经能够编写以下两个列表的交集函数:
fun intersec([], y) = []
| intersec(x::xs, y) =
if memberOf(x,y) then x::intersec(xs,y)
else intersec(xs,y)
但是我无法“概括”这个函数来接收任意数量的列表作为输入。我尝试了以下方法:
fun multiSetIntersection([]) = []
| multiSetIntersection((x::xs)::y) =
if memberOf(x,y) then x::multiSetIntersection([xs,y])
else multiSetIntersection([xs,y])
但这给了我一些类型不匹配的错误,并且无法正常工作。任何人都可以帮助我或给我一些提示来编写这个函数吗?
谢谢!
【问题讨论】:
标签: list functional-programming intersection sml