почему у Data.Set нет функции powerset?

Я смотрел Data.Set и обнаружил, что он не имеет набора параметров Функция Почему?

Я могу реализовать это так:

import Data.Set (Set, empty, fromList, toList, insert)

powerset :: (Ord a) => Set a -> Set (Set a)
powerset s = fromList $ map (fromList) (powerList $ toList s)

powerList :: [a] -> [[a]]
powerList [] = [[]]
powerList (x:xs) = powerList xs ++ map (x:) (powerList xs)

Но это не кажется самым эффективным способом сделать это. Хорошо, я также могу написать

powerList :: [a] -> [[a]]
powerList = filterM (const [True, False])

, но все же мне интересно, почему Data.Set не имеет функции powerset .

Кроме того, как лучше всего писать powerset :: (Ord a) => Set a -> Set (Set a) ?

8
задан MarcoS 21 June 2011 в 15:53
поделиться