function XDropRepeatsWith(pred, xf) {
    this.xf = xf;
    this.pred = pred;
    this.lastValue = undefined;
    this.seenFirstValue = false;
  }
Returns a new list excluding all the tailing elements of a given list which
satisfy the supplied predicate function. It passes each value from the right
to the supplied predicate function, skipping elements until the predicate
function returns a `falsy` value. The predicate function is applied to one argument:
*(value)*.

Acts as a transducer if a transformer is given in list position.

@func
@memberOf R
@since v0.16.0
@category List
@sig (a -> Boolean) -> [a] -> [a]
@sig (a -> Boolean) -> String -> String
@param {Function} predicate The function to be called on each element
@param {Array} xs The collection to iterate over.
@return {Array} A new array without any trailing elements that return `falsy` values from the `predicate`.
@see R.takeLastWhile, R.addIndex, R.drop, R.dropWhile
@example

     const lteThree = x => x <= 3;

     R.dropLastWhile(lteThree, [1, 2, 3, 4, 3, 2, 1]); //=> [1, 2, 3, 4]

     R.dropLastWhile(x => x !== 'd' , 'Ramda'); //=> 'Ramd'