import Data.List
data Tree a
= Node a
[Tree a
] deriving Show
flattenHead (Node x (n:_)) = x : flattenHead n
infiniteMap f ~(x:xs) = f x : infiniteMap f xs
scan f a ~(Node x ns) = Node a' $ infiniteMap (scan f a') ns where a' = f a x
main = print $ take 10 $ flattenHead $ scan const "pointless" undefined
aW1wb3J0IERhdGEuTGlzdAoKZGF0YSBUcmVlIGEgPSBOb2RlIGEgW1RyZWUgYV0gZGVyaXZpbmcgU2hvdwoKZmxhdHRlbkhlYWQgKE5vZGUgeCAobjpfKSkgPSB4IDogZmxhdHRlbkhlYWQgbgoKaW5maW5pdGVNYXAgZiB+KHg6eHMpID0gZiB4IDogaW5maW5pdGVNYXAgZiB4cwoKc2NhbiBmIGEgfihOb2RlIHggbnMpID0gTm9kZSBhJyAkIGluZmluaXRlTWFwIChzY2FuIGYgYScpIG5zIHdoZXJlIGEnID0gZiBhIHgKCm1haW4gPSBwcmludCAkIHRha2UgMTAgJCBmbGF0dGVuSGVhZCAkIHNjYW4gY29uc3QgInBvaW50bGVzcyIgdW5kZWZpbmVk
["pointless","pointless","pointless","pointless","pointless","pointless","pointless","pointless","pointless","pointless"]