Powerset没有重复

时间:2015-03-27 11:41:26

标签: haskell functional-programming powerset

我需要在haskell中创建一个powerset函数,它接受一个集合并输出没有重复条目的幂集,而不管输入列表中放入了什么。例如:[1,1]应该返回[[],[1]]

    powerset [] = [[]]
    powerset (x:xs) = union((powerset xs)) (map (x:) (powerset xs))

其中union是先前定义的函数,它连接两个没有重复的集合。上述代码的问题在于它将重复项计为原始条目,因此输入[1,1]返回[[],[1],[1],[1,1]]。

有什么想法吗?我曾想过在触发powerset之前使用带有输入列表和空列表的联合来清除重复项,但我不确定它会是什么样子。

1 个答案:

答案 0 :(得分:5)

  1. 从指定列表中删除所有重复项(您可以使用nub函数)。

  2. 运行您现在使用的算法。