function set( fcn ) {
	/* eslint-disable no-invalid-this */
	if ( !isFunction( fcn ) ) {
		throw new TypeError( format( 'invalid assignment. `%s` must be a function. Value: `%s`.', 'isDefined', fcn ) );
	}
	if ( fcn !== this._isDefined ) {
		debug( 'Current value: %s.', this._isDefined );

		this._isDefined = fcn;
		debug( 'New Value: %s.', this._isDefined );

		this.emit( 'change' );
	}
}
Sets the predicate function for determining whether a value is defined.

@private
@param {Function} fcn - predicate function
@throws {TypeError} must be a function