/// Add a new `$column` to `$matrix` at `$index`
/// @group setters
/// @param {Matrix} $matrix - matrix
/// @param {List} $column (()) - column to add
/// @param {Number | Null} $index (null) - index to add column at
/// @return {Matrix}
/// @require {function} rows
/// @require {function} swap-columns
@function add-column($matrix, $column: (), $index: null) {
  $desired-length: rows($matrix);

  @if length($column) == 0 {
    @for $i from 1 through $desired-length {
      $column: append($column, 0);
    }
  }

  @if length($column) != $desired-length {
    @warn "Wrong length for new column; should be #{$desired-length}.";
    @return false;
  }

  @for $i from 1 through $desired-length {
    $matrix: set-nth($matrix, $i, append(nth($matrix, $i), nth($column, $i)));
  }

  @if $index != null {
    $matrix: swap-columns($matrix, -1, $index);
  }

  @return $matrix;
}
