我正在尝试与 Scheme 中的更多列表相交,我需要一些帮助。列表如下所示:
前两个:
(((?x john) (?city new-york))
((?x mike) (?city chicago))
((?x mary) (?city london)))
和
(((?city chicago))
((?city new-york)))
我需要查看第一个列表中的每个列表(比如 A),看看第二个列表中是否有一个列表(比如 B),以便 A 至少有一个与 B 相同的元素。如果没有这样的元素,结果列表将不包含 A。上述两个列表的结果将是:
(((?x john) (?city new-york))
((?x mike) (?city chicago)))
因为该列表((?x mary) (?city london))
与来自(((?city chicago) ((?city new-york)))
.
现在结果列表必须与下一个列表相交:
(((?x mike) (?game tennis))
((?x john) (?game air-hockey)))
结果列表中的第一个列表((?x john) (?city new-york))
将与我的新结果列表中的第一个列表(?x john)
相同((?x john) (?game air-hockey))
,因此在我的新结果列表中,第一个列表将如下所示((?x john) (?city new-york) (?game air-hockey))
:按照第二个列表的这种模式,我将得到((?x mike) (?city chicago) (?game tennis))
,我的新结果列表将是:
(((?x john) (?city new-york) (?game air-hockey))
((?x mike) (?city chicago) (?game tennis)))
这意味着,对于每两个至少有一个共同元素的列表,我必须重新组合并将其添加到新的结果列表中。
现在我的问题是,你能帮我在 Scheme 中实现这个吗?我不想要代码,只想要一些关于我应该使用哪些功能的想法:)。