<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def amap(source, corofn, *more_sources, ordered=True, task_limit=None):
 """Apply a given coroutine function to the elements of one or several asynchronous sequences. Each element is used as a positional argument, using the same order as their respective sources. The generation continues until the shortest sequence is exhausted. The results can either be returned in or out of order, depending on the corresponding ``ordered`` argument. The coroutines run concurrently but their amount can be limited using the ``task_limit`` argument. A value of ``1`` will cause the coroutines to run sequentially. If more than one sequence is provided, they're also awaited concurrently, so that their waiting times don't add up. """


    def func(*args):
        return create.just(corofn(*args))

    if ordered:
        return advanced.concatmap.raw(
            source, func, *more_sources, task_limit=task_limit)
    return advanced.flatmap.raw(
        source, func, *more_sources, task_limit=task_limit)