G'day all. Quoting ajb at spamcop.net: > zipWith (!!) (fix (([1]:).map(>>= \x->if x==0 then [1] else [1,0]))) [0..] This was the shortest variant I could manage in the time allotted: zipWith(!!)(fix(([1]:).map(>>= \x->1:[0|x==1])))[0..] Cheers, Andrew Bromage