Мне нужно создать функцию powerset в haskell, которая берет набор и выводит набор мощности без повторяющихся записей, независимо от того, что помещено в список ввода. Например: [1,1] должен вернуть [[], [1]]
powerset [] = [[]]
powerset (x:xs) = union((powerset xs)) (map (x:) (powerset xs))
Если union - это ранее определенная функция, она соединяет два набора без дубликатов. Проблема с приведенным выше кодом заключается в том, что он считает дубликаты исходными записями, поэтому input [1,1] возвращает [[], [1], [1], [1,1]].
Любые идеи? Я подумал об использовании объединения со списком ввода и пустым списком для удаления дубликатов перед запуском powerset, но я не уверен, как это будет выглядеть.
filterM (const [True, False]) $ nub xs
- person Sibi   schedule 27.03.2015