On 26. Sep 2018, at 15:07,
wrote:
"value()" seems to be a misnomer, since it is used to print a label for the bin (in your second example: getting_started_listing_02.cpp line 41). To me it is not logical for a bin to have a value() member function, since a bin really is a domain of values.
That depends on the axis. axis::category has bins which represent a single value, not a continuum.
A single value, a set of values and a continuum of values are all domains of values. A bin logically is a domain of values.
Histogram uses a generalized bin concept, where a single bin can represent a single value on an axis or a domain of values. You cannot implement a category axis with your narrow concept of bin. When you have an category axis that represents the sequence "red", "green", "blue", then what's the domain for the bin "red"?
That's the example you are referring to. Same for axis::integer. The other axes types use a different kind of bin type that represents an interval. That's why there are two helper templates interval_view and value_view. Use the former for axis types whose bins represent an interval and the latter for axis types whose bins represent a single item.
I don't agree, a bin always is a domain of values and there are more options than interval and value. For instance, I could chose to have bins for odd and even integers. I think you need an interface for the generic case: a bin is a domain.
You are free to define your bin_type in almost any way you like.
operator int() seems inappropriate because why would a bin need to know its index? That should logically be the responsibility of the axis
I explained the benefit in an answer to Steven.
But, I don't think that convenience is sufficient reason. It is not logical and brings about further questions. A histogram is a relatively simple mathematical construct, it must be possible to support it with concepts that are rigorously logical, not just convenient.
Why is it illogical that a bin knows its own index? A bin both represents a location on an axis and a value or value range on that axis. The library is not forcing you to define your own bins in this way.