more idiomatic implementation of zygo for lists