expose shape intersection in the source language
generalise (++) to multidimensional arrays

concatenates the outermost dimension, intersects the lower dimensional components.