import typing


def find(predicate: typing.Callable,
         iterable: typing.Iterable):
    """
    Finds the first element in an iterable matching a predicate.

    :param predicate: predicate that returns true for any match.
    :param iterable: iterable to iterate over.
    :return: the first match; None if there is not one available.
    """
    for element in iterable:
        if predicate(element):
            return element
    return None