def every_pred(*preds):
    """
    Makes a super-predicate from the passed ones.
    A super-predicate is true only if all the child predicates
    are true. The evaluation is lazy (like bool expressions).
    """
    def composed(val):
        for pred in preds:
            if not pred(val):
                return False
        return True

    names = (pred.__name__ for pred in preds)
    composed.__name__ = "predicate(%s)" % ", ".join(names)

    return composed