def find(predicate, collection):
    """
    Attempts to find a match for the given predicate function in a given collection.

    We return the first match only, or None if no match exists.
    """
    for item in collection:
        if predicate(item):
            return item
    return None