(prog . '((+ 1 2 3) (+ 4 5 6))) returns the expected value, 15, while (apply 'prog '((+ 1 2 3) (+ 4 5 6))) fails with "Address boundary error".
Why is this so? I would have expected both to behave the same, and they do if I use a more benign function like '+ (+ . (1 2 3)) -> 6 (apply '+ (1 2 3)) -> 6