https://wandbox.org/permlink/jdlx4FhKT80IWQKN

data T = A | B deriving Show

hoge 0 = A
hoge 1 = B

fuga _ 0 _ = []
fuga k x n = let (d,m) = divMod n k in hoge m : fuga k (x-1) d

piyo x = map (fuga 2 x) [0..2^x-1]

main = print $ piyo 3