in reply to Naming question
Ha! Looks like List::Objects::WithUtils::Array::Typed does what I'm proposing here. With the array_of notation where the first parameter is the type constraint.
I'm planning a wider library with support for functional programming, so that doesn't mean I can just stop and say there's nothing to do. But that's a very encouraging existing example and perhaps I can import that code rather than recreating it.