{-

perms [2,3]
= concat (map (interleave 2) (perms [3]))
= concat (map (interleave 2) [[3]])
= concat [[[2,3],[3,2]]]
= [[2,3],[3,2]]

perms [1,2,3]
= concat (map (interleave 1) (perms [2,3]))
= concat (map (interleave 1) [[2,3],[3,2]])
= concat [[[1,2,3],[2,1,3],[2,3,1]],[[1,3,2],[3,1,2],[3,2,1]]]
= [[1,2,3],[2,1,3],[2,3,1],[1,3,2],[3,1,2],[3,2,1]]

-}

-- get all permutations of the powerset subsequences

choices :: [a] -> [[a]]
choices = concat . map perms . subs
choices :: [a] -> [[a]]
choices = concat . map perms . subs
choices = concat . map perms . subs