improving the join function
Robert Jacques
sandford at jhu.edu
Mon Oct 11 22:35:30 PDT 2010
On Mon, 11 Oct 2010 23:34:41 -0400, Daniel Gibson <metalcaedes at gmail.com>
wrote:
> Andrei Alexandrescu schrieb:
>> On 10/11/2010 08:57 PM, Daniel Gibson wrote:
>>> But right now the point is: join() does something completely different
>>> and should be renamed (or deprecated in std.string and replaced by
>>> union() - a real join isn't needed in std.string anyway, but when
>>> join()
>>> is deprecated in std.string you can implement a real join in
>>> std.algorithm without causing too much confusion).
>> I think union() is a worse name than join(). The discussion was to
>> generalize within reason std.string.join, which is present under that
>> name and with that functionality in many other languages and libraries.
>> Andrei
>
> Okay, union does kind of suck, because it implies set semantics (and
> thus no ordering).
>
> What about concat()?
> It seems like join() is expected to work this way for strings.. but as a
> generic algorithm working on kind-of-cursors?
> std.algorithm already has some operations that are also in the
> relational algebra (setDifference, setIntersection, setUnion, Filter,
> even Group (like in group by) etc), adding a join (as in relational
> algebra join) implementation would only make sense - but how are you
> gonna name that thing if join() is already taken for some kind of
> "concatenation with additional seperator"?
> Sure, "setJoin" would be available, but having both join and setJoin
> doing completely different things would be confusing.
>
> What about something like
> char[] concat(char[][] words, char[] sep="") // or sep=null
> in the string case and something equivalent in the ranges case?
>
> Cheers,
> - Daniel
Regarding the bike shed,
Well, std.range already has transversal( range_of_ranges , Nth) and
frontTransversal(range_of_ranges). So there is some opportunity for both a
transverse all elements, i.e. transversal( range_of_ranges ), and
interleaved elements, i.e. transversal( range_of_ranges, separator ).
More information about the Digitalmars-d
mailing list