Just a minor remark - `be_empty` seems more natural to me than `eq([])`. And it gives you the extra flexibility of not tying the code to arrays.