@aestiff That's a great project. Please keep us posted about your progress (and let's know if you have more questions) ;-)
Btw I also like the functional style of D, but I would bet that stuff like
zip(a.joiner, b.joiner).map!("a + a").array.sliced(a.shape) is rather slow compared to plain-old loops.