Hi everyone,

Technically r1 and r2 are different types of range. Isn't it inconsistent to chain both? If not, why is the char type converted to int?

```d
import std.stdio,
       std.range;

void main() {
  auto r1 = N!size_t(10, 1, 1);
  auto r2 = N!real(15, .5, 10);

  r1.chain(r2).writeln;
// [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 14, 14.5]

  auto a = [97, 98, 99];
  auto b = ['d', 'e', 'f'];

  a.chain(b).writeln;
  // [97, 98, 99, 100, 101, 102]
}

struct N(T)
{
  T last, step, first;
  bool empty() => first >= last;
  T front() => first;
  auto popFront() => first += step;
}
void main() {
  auto r1 = N!size_t(10, 1, 1);
  auto r2 = N!real(15, .5, 10);

  r1.chain(r2).writeln;
// [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 14, 14.5]

  auto a = [97, 98, 99];
  auto b = ['d', 'e', 'f'];

  a.chain(b).writeln;
  // [97, 98, 99, 100, 101, 102]
}

struct N(T)
{
  T last, step, first;
  bool empty() => first >= last;
  T front() => first;
  auto popFront() => first += step;
}
```

SDB@79

Reply via email to