lep*_*ard 5 haskell functional-programming powerset
我需要在haskell中创建一个powerset函数,它接受一个集合并输出没有重复条目的幂集,而不管输入列表中放入了什么.例如:[1,1]应该返回[[],[1]]
powerset [] = [[]]
powerset (x:xs) = union((powerset xs)) (map (x:) (powerset xs))
Run Code Online (Sandbox Code Playgroud)
union是先前定义的函数,它连接两个集合而没有重复.上述代码的问题在于它将重复项计为原始条目,因此input [1,1]返回[[],[1],[1],[1,1]].
有任何想法吗?在触发powerset之前,我曾想过使用带有输入列表和空列表的union来擦除重复项,但我不确定它会是什么样子.