xxxxxxxxxx
import std.range : isInputRange, ElementType;
auto interspersed(T, U)(T x, U y)
if (isInputRange!T && is(U : ElementType!T))
{
import std.range : dropBackOne;
import std.algorithm.iteration : map, joiner;
return x.map!(a => [a, y]).joiner.dropBackOne;
}
void main()
{
import std.stdio : writeln;
import std.range : iota;
import std.array : array;
auto x = iota(5);
auto y = interspersed(x, 5);
assert(y.array == [0, 5, 1, 5, 2, 5, 3, 5, 4, 5]);
}