The definition operator is typically used in DSL packages like
`ggvis`

and `data.table`

. It is also used in the tidyverse as a way
of unquoting names (see quasiquotation).

`is_definition()`

returns`TRUE`

for calls to`:=`

.`is_formulaish()`

returns`TRUE`

for both formulas and colon-equals operators.

is_definition(x) new_definition(lhs, rhs, env = caller_env()) is_formulaish(x, scoped = NULL, lhs = NULL)

x | An object to test. |
---|---|

lhs, rhs | Expressions for the LHS and RHS of the definition. |

env | The evaluation environment bundled with the definition. |

The recommended way to use it is to capture arguments as
expressions or quosures. You can then give a special function
definition for the `:=`

symbol in an overscope. Note that if you
capture dots with `exprs()`

or `quos()`

, you need to disable
interpretation of `:=`

by setting `.unquote_names`

to `FALSE`

.

From rlang and data.table perspectives, this operator is not meant to be evaluated directly at top-level which is why the exported definitions issue an error.

These functions are experimental.

# A predicate is provided to distinguish formulas from the # colon-equals operator: is_definition(quote(a := b))#> [1] TRUEis_definition(a ~ b)#> [1] FALSE# is_formulaish() tests for both definitions and formulas: is_formulaish(a ~ b)#> [1] TRUEis_formulaish(quote(a := b))#> [1] TRUE