<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def first(iterable = None, *, name = None, metric = call_default):
 """Measure time elapsed to produce first item of an iterable :arg iterable: any iterable :arg function metric: f(name, 1, time) :arg str name: name for the metric """

    if iterable is None:
        return _first_decorator(name, metric)
    else:
        return _do_first(iterable, name, metric)