Я хочу написать функцию powerset в Haskell с объявлением функции:
powerset :: Ord a => [a] -> [[a]]
Однако я пытаюсь сделать лексикографический порядок так, чтобы:
powerset [1,2,3] = [[], [1], [1,2], [1,2,3], [1,3], [2], [2,3], [3]]
Я нашел другие способы выполнения набора мощности, например:
powerSet = filterM (const [True, False])
но ничего, что обеспечивает powerset в лексографическом порядке. Есть ли способ написать функцию набора мощности, чтобы обеспечить это или отсортировать несортированный набор мощности в этом порядке?