def perm( m ) | m.length() == 1 and m(0).length() == 1 = m(0, 0) | otherwise = sum( m(i, 0)*perm(m(0:i, 1:m.length()) + m(i+1:m.length(), 1:m.length())) | i <- 0:m.length() ) def det( m ) | m.length() == 1 and m(0).length() == 1 = m(0, 0) | otherwise = sum( (-1)^i*m(i, 0)*det(m(0:i, 1:m.length()) + m(i+1:m.length(), 1:m.length())) | i <- 0:m.length() )