vetr_settings: Generate Control Settings For vetr and alike

View source: R/settings.R

vetr_settingsR Documentation

Generate Control Settings For vetr and alike


Utility function to generate setting values. We strongly recommend that you generate the settings outside of function calls so that setting generation does not become part of the vet/vetr/alike evaluation as that could add noticeable overhead to the function evaluation.


  type.mode = 0L,
  attr.mode = 0L,
  lang.mode = 0L,
  fun.mode = 0L,
  rec.mode = 0L,
  suppress.warnings = FALSE, = 100L,
  width = -1L,
  env.depth.max = 65535L,
  symb.sub.depth.max = 65535L,
  symb.size.max = 15000L,
  nchar.max = 65535L,
  track.hash.content.size = 63L,
  env = NULL,
  result.list.size.init = 64L,
  result.list.size.max = 1024L



integer(1L) in 0:2, defaults to 0, determines how object types (as in typeof) are compared:

  • 0: integer like numerics (e.g. 1.0) can match against integer templates, and integers always match real templates; all function types are considered of the same type

  • 1: integers always match against numeric templates, but not vice versa, and integer-like numerics are treated only as numerics; functions only match same function type (i.e. closures only match closures, builtins builtins, and specials specials)

  • 2: types must be equal for all objects types (for functions, this is unchanged from 1)


integer(1L) in 0:2, defaults to 0, determines strictness of attribute comparison:

  • 0 only checks attributes that are present in target, and uses special comparisons for the special attributes (class, dim, dimnames, names, row.names, levels, srcref, and tsp) while requiring other attributes to be alike

  • 1 is like 0, except all atributes must be alike

  • 2 requires all attributes to be present in target and current and to be alike


integer(1L) in 0:1, defaults to 0, controls language matching, set to 1 to turn off use of


NOT IMPLEMENTED, controls how functions are compared


integer(1L) 0 currently unused, intended to control how recursive structures (other than language objects) are compared


logical(1L) suppress warnings if TRUE

max length of numeric vectors to consider for integer likeness (e.g. c(1, 2) can be considered "integer", even though it is numeric); currently we limit this check to vectors shorter than 100 to avoid a potentially expensive computation on large vectors, set to -1 to apply to all vectors irrespective of length


to use when deparsing expressions; default -1 equivalent to getOption("width")


integer(1L) maximum number of nested environments to recurse through, defaults to 65535L; these are tracked to make sure we do not get into an infinite recursion loop, but because they are tracked we keep a limit on how many we will go through, set to -1 to allow unlimited recursion depth. You should not need to change this unless you are running into the recursion limit.


integer(1L) maximum recursion depth when recursively substituting symbols in vetting expression, defaults to 65535L


integer(1L) maximum number of characters that a symbol is allowed to have in vetting expressions, defaults to 15000L.


integer(1L) defaults to 65535L, threshold after which strings encountered in C code are truncated. This is the read limit. In theory vetr can produce strings longer than that by combining multiple shorter pieces.


integer(1L) (advanced) used to set the initial size of the symbol tracking vector used with the hash table that detects recursive symbol substitution. If the tracking vector fills up it will be grown by 2x. This parameter is exposed mostly for developer use.


what environment to use to match calls and evaluate vetting expressions, although typically you would specify this with the env argument to vet; if NULL will use the calling frame to vet/vetr/alike.


initial value for token tracking. This will be grown by a factor of two each time it fills up until we reach result.list.size.max.


maximum number of tokens we keep track of, intended mostly as a safeguard in case a logic error causes us to keep allocating memory. Set to 1024 as a default value since it should be exceedingly rare to have vetting expressions with such a large number of tokens, enough so that if we reach that number it is more likely something went wrong.


Settings after are fairly low level and exposed mostly for testing purposes. You should generally not need to use them.

Note that a successful evaluation of this function does not guarantee a correct settings list. Those checks are carried out internally by vet/vetr/alike.


list with all the setting values

See Also

type_alike, alike, vetr


type_alike(1L, 1.0, settings=vetr_settings(type.mode=2))
## better if you are going to re-use settings to reduce overhead
set <- vetr_settings(type.mode=2)
type_alike(1L, 1.0, settings=set)

vetr documentation built on Jan. 7, 2023, 1:19 a.m.