Description Usage Arguments Functions Examples
This function analyses a recursive function to check if we can transform it into
a loop or trampoline version with transform
. Since this function needs to handle
recursive functions, it needs to know the name of its input function, so this must be
provided as a bare symbol.
1 2 3 | can_loop_transform_(fun)
can_loop_transform(fun)
|
fun |
The function to check. Must be provided by its (bare symbol) name. |
can_loop_transform_
: This version expects fun
to be quosure.
can_loop_transform
: This version quotes fun
itself.
1 2 3 4 5 6 7 8 9 10 | factorial <- function(n)
if (n <= 1) 1 else n * factorial(n - 1)
factorial_acc <- function(n, acc = 1)
if (n <= 1) acc else factorial_acc(n - 1, n * acc)
can_loop_transform(factorial) # FALSE -- and prints a warning
can_loop_transform(factorial_acc) # TRUE
can_loop_transform_(rlang::quo(factorial)) # FALSE -- and prints a warning
can_loop_transform_(rlang::quo(factorial_acc)) # TRUE
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.