-- works on finite and infinite arguments in both places.
convolve :: [a] -> [b] -> [[(b,a)]]
convolve = diagonalize ... grid
convolve :: [a] -> [b] -> [[(b,a)]]
convolve = diagonalize ... grid
convolve = diagonalize ... grid