and(validator) {
    if (!(validator instanceof Monadidator))
      throw new TypeError('validator must be an instance of Monadidator');
    return this.chain(() => validator);
  }
/**
   * A method that returns a new validator that first applies `this` validator
   * and then applies the given `validator`. Succeeds only if both validators
   * succeeds and fails otherwise.
   *
   * @category instance
   * @method "{and,then}"
   * @memberOf Monadidator
   * @param {Monadidator} validator
   * @return {Monadidator}
   */
A method that returns a new validator that first applies `this` validator
and then applies the given `validator`. Succeeds only if both validators
succeeds and fails otherwise.


A method that returns a new validator that first applies ` this ` validator and then applies the given ` validator ` . Succeeds only if both validators succeeds and fails otherwise .
and(validator) {
    if (!(validator instanceof Monadidator))
      throw new TypeError('validator must be an instance of Monadidator');
    return this.chain(() => validator);
  }
and ( validator ) { if ( ! ( validator instanceof Monadidator ) ) throw new TypeError ( 'validator must be an instance of Monadidator' ) ; return this . chain ( ( ) => validator ) ; }
A method that returns a new validator that first applies `this` validator
 and then applies the given `validator`.
A method that returns a new validator that first applies ` this ` validator and then applies the given ` validator ` .