I was thinking more of the usage on the client.

```javascript
op.onAll([
    self.greaterThanOrEqualTo(minimum),
    self.lessThanOrEqualTo(maximum)
]);

op.onAllTrue([utils.isInteger, op.strictEquals(min)]);


op.onAllTrue([utils.isInteger, op.strictEquals(1)])(1) # true;
```

This would be:
```javascript
op.callWith = function (value) {
  return function (f) {
    return f(value);
  };
}
op.and = function (a, b) {
  return a && b;
}

op.onAllTrue = function (predicates) {
  return function (value) {
    return predicates.map(op.callWith(value)).reduce(op.and, true);
  }
}
```