class_docstr: Type hint for :func:`make_funsor` decorated functions. This provides hints
  for fresh variables (names) and the return type.
  
  Examples::
  
      Fresh[Real]  # a constant known domain
      Fresh[lambda x: Array[x.dtype, x.shape[1:]]  # args are Domains
      Fresh[lambda x, y: Bint[x.size + y.size]]
  
  :param callable fn: A lambda taking named arguments (in any order)
      which will be filled in with the domain of the similarly named
      funsor argument to the decorated function. This lambda should
      compute a desired resulting domain given domains of arguments.
class_docstr_tok: ["Type","hint","for",":","func",":","`","make_funsor","`","decorated","functions",".","This","provides","hints","for","fresh","variables","(","names",")","and","the","return","type",".","Examples",":",":","Fresh","[","Real","]","#","a","constant","known","domain","Fresh","[","lambda","x",":","Array","[","x.dtype",",","x.shape","[","1",":","]","]","#","args","are","Domains","Fresh","[","lambda","x",",","y",":","Bint","[","x.size","+","y.size","]","]",":","param","callable","fn",":","A","lambda","taking","named","arguments","(","in","any","order",")","which","will","be","filled","in","with","the","domain","of","the","similarly","named","funsor","argument","to","the","decorated","function",".","This","lambda","should","compute","a","desired","resulting","domain","given","domains","of","arguments","."]
code: def __call__(self, **kwargs):
      return self.fn(*map(kwargs.__getitem__, self.args))
  
imports: import inspect
  import typing
  import warnings
  from collections import OrderedDict
  from functools import singledispatch
  import makefun
  from funsor.instrument import debug_logged
  from funsor.terms import Funsor, FunsorMeta, Variable, eager, to_funsor
  from funsor.util import as_callable
label_desc: Use image node_id 2 for calling the Fresh obj's underlying member method code with example usage: obj.__call__() and returns: self