from functools import reduce


def fuzzy_or(values):
    """
    Applies fuzzy-or to a list of values
    >>> fuzzy_or([0.5])
    0.5
    >>> fuzzy_or([0.5, 0.5])
    0.75
    >>> fuzzy_or([0.5, 0.5, 0.5])
    0.875
    """
    if min(values) < 0 or max(values) > 1:
        raise ValueError("fuzzy_or expects values in [0,1]")
    return reduce(lambda x, y: 1 - (1 - x) * (1 - y), values)