code: function transpose (arrayLike) {
      var minLen = MAX_ARRAY_LENGTH;
      var len = _toArrayLength(arrayLike.length);
  
      if (len === 0) {
          return [];
      }
  
      for (var j = 0, elementLen; j < len; j++) {
          elementLen = _toArrayLength(arrayLike[j].length);
  
          if (elementLen < minLen) {
              minLen = elementLen;
          }
      }
  
      var result = Array(minLen);
  
      for (var i = 0, el; i < minLen; i++) {
          el = result[i] = Array(len);
  
          for (j = 0; j < len; j++) {
              el[j] = arrayLike[j][i];
          }
      }
  
      return result;
  }
docs: Transposes a matrix. Can also be used to reverse a {@link module:lamb.zip|zip} operation.<br/>
  Just like {@link module:lamb.zip|zip}, the received array-like objects will be truncated to the
  shortest length.
  @example <caption>Transposing a matrix:</caption>
  _.transpose([
  [1, 2, 3],
  [4, 5, 6],
  [7, 8, 9]
  ]) // =>
  // [
  //     [1, 4, 7],
  //     [2, 5, 8],
  //     [3, 6, 9]
  // ]
  
  @example <caption>Showing the relationship with <code>zip</code>:</caption>
  var zipped = _.zip(["a", "b", "c"], [1, 2, 3]); // => [["a", 1], ["b", 2], ["c", 3]]
  
  _.transpose(zipped) // => [["a", "b", "c"], [1, 2, 3]]
  
  @memberof module:lamb
  @category Array
  @see {@link module:lamb.zip|zip}
  @since 0.14.0
  @param {ArrayLike<ArrayLike>} arrayLike
  @returns {Array<Array>}