To get a better understanding of this, suppose that the function (f ) is a binary operator * (whose meaning could be anything), where operator * is right-associative. That is, a*b*c means a*(b*c). Then rfold(i, *, [a,b,c]) = a*b*c*i and rfold(x, *, [a,b,c,d]) = a*b*c*d*x.
By definition, rfold(i, f, [ ]) = i.
rfold(i, f, []) = i rfold(i, f, h::t) = f(h, rfold(i, f, t))