
So overall, we have two sets of functions which differ quite significantly in their interface and implementation. The question perhaps, is if we want to leave them apart or merge the desirable features into one.
I'm not sure which two sets you're referring to. Is it the *ref* ones on the one hand and list_of on the other?
John Bytheway
list_of(x),y ---> cref_csv(x,y) list_of(x)(y) ---> cref_csv(x,y) list_of(x).range( v ) ---> cref_csv(x) && v; For this group of functionalities cref_csv is probably preferable, in which case the value added of a hypothetical csv that forwards to list_of() is small. list_of() ---> cref_csv(T()) list_of(x,y) ---> cref_csv(T(x,y)) list_of(x).repeat(n,y) ---> NA list_of(x).repeat(n,fun) ---> NA For theses 2 groups of functions, list_of() has some advantage in terms of reduced typing or simply cannot be replicated by the cref_xxx family of functions. Conversion and range comparison capabilities are almost the same. The difference is that it's possible to do say cref_csv(a,b) != cref_csv(c,d), not list_of(a)(b) != list_of(c)(d) but, if deemed necessary, it can be envisaged.