title: speed up function that takes a function as argument with numba
body: <p>I am trying to use <code>numba</code> to speed up a function that takes another function as argument. A minimal example would be the following:</p>
  
  <pre><code>import numba as nb
  
  def f(x):
      return x*x
  
  @nb.jit(nopython=True)
  def call_func(func,x):
      return func(x)
  
  if __name__ == '__main__':
      print(call_func(f,5))
  </code></pre>
  
  <p>This, however, doesn't work, as apparently <code>numba</code> doesn't know what to do with that function argument. The traceback is quite long:</p>
  
  <pre><code>Traceback (most recent call last):
    File "numba_function.py", line 15, in &lt;module&gt;
      print(call_func(f,5))
    File "/opt/local/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/numba/dispatcher.py", line 330, in _compile_for_args
      raise e
    File "/opt/local/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/numba/dispatcher.py", line 307, in _compile_for_args
      return self.compile(tuple(argtypes))
    File "/opt/local/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/numba/dispatcher.py", line 579, in compile
      cres = self._compiler.compile(args, return_type)
    File "/opt/local/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/numba/dispatcher.py", line 80, in compile
      flags=flags, locals=self.locals)
    File "/opt/local/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/numba/compiler.py", line 740, in compile_extra
      return pipeline.compile_extra(func)
    File "/opt/local/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/numba/compiler.py", line 360, in compile_extra
      return self._compile_bytecode()
    File "/opt/local/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/numba/compiler.py", line 699, in _compile_bytecode
      return self._compile_core()
    File "/opt/local/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/numba/compiler.py", line 686, in _compile_core
      res = pm.run(self.status)
    File "/opt/local/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/numba/compiler.py", line 246, in run
      raise patched_exception
    File "/opt/local/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/numba/compiler.py", line 238, in run
      stage()
    File "/opt/local/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/numba/compiler.py", line 452, in stage_nopython_frontend
      self.locals)
    File "/opt/local/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/numba/compiler.py", line 841, in type_inference_stage
      infer.propagate()
    File "/opt/local/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/numba/typeinfer.py", line 773, in propagate
      raise errors[0]
    File "/opt/local/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/numba/typeinfer.py", line 129, in propagate
      constraint(typeinfer)
    File "/opt/local/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/numba/typeinfer.py", line 380, in __call__
      self.resolve(typeinfer, typevars, fnty)
    File "/opt/local/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/numba/typeinfer.py", line 402, in resolve
      raise TypingError(msg, loc=self.loc)
  numba.errors.TypingError: Failed at nopython (nopython frontend)
  Invalid usage of pyobject with parameters (int64)
  No type info available for pyobject as a callable.
  File "numba_function.py", line 10
  [1] During: resolving callee type: pyobject
  [2] During: typing of call at numba_function.py (10)
  
  This error may have been caused by the following argument(s):
  - argument 0: cannot determine Numba type of &lt;class 'function'&gt;
  </code></pre>
  
  <p>Is there a way to fix this?</p>