function closure( type, eta0, lambda ) {
	var iter;
	var ret;

	iter = 1;

	switch ( type ) {
	case 'basic':
		// Default case: 'basic'
		ret = getEtaBasic;
		break;
	case 'constant':
		ret = getEtaConstant;
		break;
	case 'pegasos':
		ret = getEtaPegasos;
		break;
	default:
		throw new Error( format( 'invalid option. `%s` option must be one of the following: "%s". Option: `%s`.', 'learningRate', [ 'basic', 'constant', 'pegasos' ].join( '", "' ), type ) );
	}
	return ret;

	/**
	* Returns the basic learning rate.
	*
	* @private
	* @returns {number} learning rate
	*/
	function getEtaBasic() {
		var eta = 1000.0 / ( iter + 1000.0 );
		iter += 1;
		return eta;
	}

	/**
	* Returns the constant learning rate.
	*
	* @private
	* @returns {number} learning rate
	*/
	function getEtaConstant() {
		iter += 1;
		return eta0;
	}

	/**
	* Returns the Pegasos learning rate.
	*
	* @private
	* @returns {number} learning rate
	*/
	function getEtaPegasos() {
		var eta = 1.0 / ( lambda * iter );
		iter += 1;
		return eta;
	}
}
Returns a function to retrieve the current learning rate.

@private
@param {string} type - string denoting the learning rate to use. Can be `constant`, `pegasos` or `basic`.
@param {PositiveNumber} eta0 - constant learning rate
@param {NonNegativeNumber} lambda - regularization parameter
@throws {Error} first argument must be `basic`, `constant` or `pegasos`
@returns {Function} getEta function