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