public void eachRange(Range r, Func f)
{
int s = r.start(m_size);
int e = r.end(m_size);
int n = e - s + 1;
if (n < 0) throw IndexErr.make(r).val;
if (f.arity() == 1)
{
for (int i=s; i<=e; ++i)
f.call(m_values[i]);
}
else
{
for (int i=s; i<=e; ++i)
f.call(m_values[i], i);
}
}