range.c:188
static void
range_each_func(range, func, v, e, arg)
    VALUE range;
    VALUE (*func) _((VALUE, void*));
    VALUE v, e;
    void *arg;
{
    if (EXCL(range)) {
	while (r_lt(v, e)) {
	    (*func)(v, arg);
	    v = rb_funcall(v, id_succ, 0, 0);
	}
    }
    else {
	while (r_le(v, e)) {
	    (*func)(v, arg);
	    v = rb_funcall(v, id_succ, 0, 0);
	}
    }
}
