We could  implement this directly, without going via `unr3`.  For 3D diagrams which end up calling `<.>` a lot (?) it could perhaps mean a small speedup---though maybe the tuples will get optimized away and it won't make a difference at all, I'm not sure.