A callable object is an object that can be set as the head of a call node. This includes symbolic objects that evaluate to a function or literal functions.




An object to test.


Note that strings may look like callable objects because expressions of the form "list"() are valid R code. However, that's only because the R parser transforms strings to symbols. It is not legal to manually set language heads to strings.


# Symbolic objects and functions are callable: is_callable(quote(foo))
#> [1] TRUE
#> [1] TRUE
# mut_node_car() lets you modify calls without any checking: lang <- quote(foo(10)) mut_node_car(lang, get_env())
#> <environment>(10)
# Use is_callable() to check an input object is safe to put as CAR: obj <- base::identity if (is_callable(obj)) { lang <- mut_node_car(lang, obj) } else { abort("`obj` must be callable") } eval_bare(lang)
#> [1] 10