我需要在 haskell 中创建一个 powerset 函数,它需要一个集合并输出没有重复条目的电源集,无论输入列表中放置了什么。例如:[1,1] 应该返回 [[],[1]]
powerset [] = [[]]
powerset (x:xs) = union((powerset xs)) (map (x:) (powerset xs))
其中 union 是一个先前定义的函数,它与两个没有重复的集合相邻。上述代码的问题在于它将重复项计为原始条目,因此输入 [1,1] 返回 [[],[1],[1],[1,1]]。
有任何想法吗?在触发 powerset 之前,我曾考虑使用 union 与输入列表和空列表来清除重复项,但我不确定它会是什么样子。