satisfy(predicate) {
    if (typeof predicate !== 'function')
      throw new TypeError('predicate must be a function');
    return this.and(this.constructor.satisfy(predicate));
  }
/**
   * A type-restriction method that succeeds if the given predicate function
   * returns true for the current input, and fails otherwise.
   *
   * @category instance
   * @function "{satisfy,satisfies,satisfying}"
   * @memberOf Monadidator
   * @param {Function} predicate
   * @return {Monadidator}
   */
A type-restriction method that succeeds if the given predicate function
returns true for the current input, and fails otherwise.


A type - restriction method that succeeds if the given predicate function returns true for the current input and fails otherwise .
satisfy(predicate) {
    if (typeof predicate !== 'function')
      throw new TypeError('predicate must be a function');
    return this.and(this.constructor.satisfy(predicate));
  }
satisfy ( predicate ) { if ( typeof predicate !== 'function' ) throw new TypeError ( 'predicate must be a function' ) ; return this . and ( this . constructor . satisfy ( predicate ) ) ; }
A type-restriction method that succeeds if the given predicate function
 returns true for the current input, and fails otherwise.
A type - restriction method that succeeds if the given predicate function returns true for the current input and fails otherwise .