I hate to keep coming back to this, but I'm unsettled and unemployed, so I
might as well keep at it until I feel like I've got it right.
We've been talking about the roles that AH provides as being "Perl5" or
"Native", but they're really not -- some of them are (Str) but some of them
aren't (Counter, Bool, ImmutableHash, etc.). It doesn't even match up exactly
with Moose's builtin types, so "Moose" isn't a good name either.
It's a collection of common, simple data types. I can't think of a good name
for this. (And it's not even correct -- Counter is very useful, but isn't
really a "data structure" so much as it is a common code pattern.)
The fact that the underlying data structures are normal Perl hashes, arrays,
scalars, etc. is also not something we really want to draw attention to; after
all, the whole point is that you use $self->push_things instead of push
@{$self->things}, so that consumers of your API don't hardcode that sort of
thing.
In the end of I'm not saying much different than I have before: what is the
most precise way to distinguish these particular attribute traits from other
traits?
I also keep coming back to something Dave said, along the lines of "well, if
these values actually had methods, we'd just delegate to them instead of
special-casing it", and wondering how much work it would take to solve auto- or
manual boxing in a way that people would like. I don't want to be distracted
by that and end up with nothing to show for the hackathon work that we did on
AH, though.
hdp.