code: function range (start, limit, step) {
      start = _forceToNumber(start);
      limit = _forceToNumber(limit);
      step = arguments.length === 3 ? _forceToNumber(step) : 1;
  
      if (step === 0) {
          return limit === start ? [] : [start];
      }
  
      var len = Math.max(Math.ceil((limit - start) / step), 0);
      var result = Array(len);
  
      for (var i = 0, last = start; i < len; i++) {
          result[i] = last;
          last += step;
      }
  
      return result;
  }
docs: Generates an arithmetic progression of numbers starting from <code>start</code> up to,
  but not including, <code>limit</code>, using the given <code>step</code>.
  @example
  _.range(2, 10) // => [2, 3, 4, 5, 6, 7, 8, 9]
  _.range(1, -10, -2) // => [1, -1, -3, -5, -7, -9]
  _.range(0, 3, 1) // => [0, 1, 2]
  _.range(-0, 3, 1) // => [-0, 1, 2]
  _.range(1, -10, 2) // => []
  _.range(3, 5, -1) // => []
  
  @example <caption>Behaviour if <code>step</code> happens to be zero:</caption>
  _.range(2, 10, 0) // => [2]
  _.range(2, -10, 0) // => [2]
  _.range(2, 2, 0) // => []
  
  @memberof module:lamb
  @category Math
  @see {@link module:lamb.generate|generate}
  @since 0.1.0
  @param {Number} start
  @param {Number} limit
  @param {Number} [step=1]
  @returns {Number[]}