function
    Usage: (infer-tag {:keys [tag], :as ast})
    Performs local type inference on the AST adds, when possible,
one or more of the following keys to the AST:
* :tag        represents the type the expression represented by the node
* :return-tag implies that the node will return a function whose
              invocation will result in a object of this type
* :arglists   implies that the node will return a function with
              this arglists
* :ignore-tag true when the node is untyped, does not imply that
              all untyped node will have this
    
    
    
    Source