data Nest a = Leaf a | Node [Nest a]
f :: Nest a -> [a]
f (Leaf x) = [x]
[ Node [Leaf "a", Leaf "b", Leaf "c", Leaf "d"]
, Node [Leaf "a", Leaf "b", Node [Leaf "c", Leaf "d"]]
, Node [Node [Leaf "a", Leaf "b"], Node [Leaf "c", Leaf "d"]]
, Node [Leaf "a", Node [Leaf "b", Node [Leaf "c", Leaf "d"]]]
]
ZGF0YSBOZXN0IGEgPSBMZWFmIGEgfCBOb2RlIFtOZXN0IGFdCgpmIDo6IE5lc3QgYSAtPiBbYV0KZiAoTGVhZiB4KSA9IFt4XQpmIChOb2RlIHhzKSA9IGNvbmNhdCAuIG1hcCBmICQgeHMKCm1haW4gPSBtYXBNXyAocHJpbnQgLiBmKQoJWyBOb2RlIFtMZWFmICJhIiwgTGVhZiAiYiIsIExlYWYgImMiLCBMZWFmICJkIl0KCSwgTm9kZSBbTGVhZiAiYSIsIExlYWYgImIiLCBOb2RlIFtMZWFmICJjIiwgTGVhZiAiZCJdXQoJLCBOb2RlIFtOb2RlIFtMZWFmICJhIiwgTGVhZiAiYiJdLCBOb2RlIFtMZWFmICJjIiwgTGVhZiAiZCJdXQoJLCBOb2RlIFtMZWFmICJhIiwgTm9kZSBbTGVhZiAiYiIsIE5vZGUgW0xlYWYgImMiLCBMZWFmICJkIl1dXQoJXQo=
["a","b","c","d"]
["a","b","c","d"]
["a","b","c","d"]
["a","b","c","d"]