Two implementations

The zipper splits the list into two parts, every second element goes into the "left" one, the others into the "right" one. It then recursively sums the number of elements of these two parts.

The collector just walks the list, counting the elements, and returns the count when it hits the end.