Wondering if there's any way I can change it?
Well the order is { {1,2,3}, {1,2}, {1,3}, {1}, {1,3}, {2,3}, {2}, {3}, {} } because that is how you implemented this. Indeed for an empty list, you return as powerSet' [], a singleton list with an empty list. For a non-empty list, you recurse on the tail of the list, and first you yield that list where you each time prepend x to that list, and then you yield the result of the recursive call without prepending.
Hence for a list [2], the recursive case is [[]], so we first prepend it with 2 yielding [2], and then we do not prepend this, yielding [].
If we thus calculate the powerset of [1,2], the recursive call will result in [[2], []]. We first emit the list where we each time prepend 1, so [1,2] and [1], and then we emit the list without prepending, making it [2] and []. Or putting this together [[1,2], [1], [2], []].
You can yield the results in a different order, for example with:
powerSet' :: [a] -> [[a]]
powerSet' l = [] : go l
where go [] = []
go (x:xs) = [x] : map (x:) (go xs) ++ go xs
But as @DanielWagner says in his comment:
so perhaps the exercise is intended to encourage a search tree implementation.
You likely should not alter the order of the items that are yielded by the powerSet', but make sure your Tree is a (binary) search tree, and thus implement the fromList function in such way that it insert the items in an ordered manner in your Tree.
{ {}, {1}, ... }?Tree, instead of aSet.{2}to{1,2}in the expected output, then the subsets appear in lexicographical order; so perhaps the exercise is intended to encourage a search tree implementation.fromListshould thus insert the items in a ordered way. Then the "responsibility" is more for the tree generation part than for thepowerSet'function.