from typing import Iterable
from typing import Callable
from typing import Generator


def argmap(functions: Iterable[Callable], args: Iterable) -> Generator:
    """Maps the same argument(s) to multiple functions.

    >>> inc = lambda x:x+1
    >>> dec = lambda x:x-1
    >>> list(argmap([inc, dec],[1]))
        [2,0]

    you can even map multiple arguments

    >>> add = lambda a,b: a+b
    >>> sub = lambda a,b:  a-b
    >>> list(argmap([add, sub], [2, 1])) # two arguments
        [3, 1]

    Added in version: 0.1.0
    """
    return (f(*args) for f in functions)