function map for Wrapped Function. A forced transfermation to WrappedFunction would be applied.async def 

            fmap(self, f: 'WrappedFunction') -> 'WrappedFunction'

def fmap(self, f: 'WrappedFunction') -> 'WrappedFunction':
        '''
            function map for Wrapped Function. A forced transfermation to WrappedFunction would be applied.async def 

            fmap(self, f: 'WrappedFunction') -> 'WrappedFunction'
        '''
        if not isinstance(f, WrappedFunction):
            f = WrappedFunction(f)
        return WrappedFunction(lambda *args, **kwargs: self(f(*args, **kwargs)), nargs=f.nargs, nouts=self.nouts)