function 'diagonal' had a bug, it was calling (mp/main-diagonal [m]) instead of (mp/main-diagonal m)