Andrei Alexandrescu wrote:
Brad Roberts wrote:
Without looking at the docs, code, or compiling and running a test, what will
this do:

    foreach(x, splitter(",a,b,", ","))
        writefln("x = %s", a);

I'll make it multiple choice:

choice 1)
  x = a
  x = b

choice 2)
  x =
  x = a
  x = b

choice 3)
  x = a
  x = b
  x =

choice 4)
  x =
  x = a
  x = b
  x =

Later,
Brad

Thanks for bringing this to attention, Brad. Splitter does what Perl's split does: 2. This means comma is an item terminator and not an item separator.

This is the problem, I think. Linguistically, "split" happens at seperators (split points), so it should be 4. The argument of utility from Perl is reasonable, but with those semantics I think it needs a different name - you don't "split" at "terminators". You could get away with terminators in a function name like C's "strcol" or "collate", where the intuition for how the separation occurs isn't nearly as strong, but not for "split".

Reply via email to