-- | Transpose a row by another.
transpose     :: Row -> Row -> Row
transpose x y | bells x /= bells y = error "Mismatched row length"
              | otherwise          = Row [getBell x (toInt b) | b <- toList y]
transpose     :: Row -> Row -> Row
transpose x y | bells x /= bells y = error "Mismatched row length"
              | otherwise          = Row [getBell x (toInt b) | b <- toList y]
transpose x y | bells x /= bells y = error "Mismatched row length"
              | otherwise          = Row [getBell x (toInt b) | b <- toList y]