Indeed such lists are not possible and it really is a tree you are looking at, for example something like this.
data NestedList a = Leaf a | Node [NestedList a]
Now you have to think what you really mean by swap
. You can swap the top level lists, you can swap leaves and ...