def delete(v, iterable):
    """
    delete :: __eq__ a => a -> iter a -> iter a
    delete x removes the first occurrence of x from its list argument. For example,
    delete 'a' "banana" == "bnana"
    It is a special case of deleteBy, which allows the programmer to supply their own equality test.
    """
    for x in iterable:
        if x != v:
            yield x
