I've been dying to do this all day but work and then family intervened.
Dominic.
import Data.List
weave =
unfoldr f
where
f ([],_,_) = Nothing
f (x:xs,[],zs) = Just (x,([],[],[]))
f (x:xs,ys,zs) = Just (x,(ys,zs,xs))