code: function arrAssoc(x, k, v) {
  	var y;
  	if (k < 0 || k > x.length) {
  		throw new Error('Index ' + k + ' out of bounds [0,' + x.length + ']');
  	}
  	y = [].concat(x);
  	y[k] = v;
  	return y;
  }
docs: Immutable collection operations, based on doing a naive path copy. Should be performant for objects that are not too large, and nesting not too deep.