docs: function List(length) {
          if (arguments.length === 0) {
              length = 0;
          }
  
          // in this case we create a list with a given length
          if (arguments.length <= 1 && typeof length === 'number') {
              if (this instanceof List) {
                  this.length = length;
              }
              else {
                  return new List(length);
              }
          }
          else {
              //here we create a list with initial values
              if (!(this instanceof List)) {
                  return List.fromArray(arrSlice(arguments));
              }
              else {
                  for (var i = 0, l = arguments.length ; i < l ; i++) {
                      this[i] = arguments[i];
                  }
                  this.length = arguments.length;
              }
          }
      }