# 1. Ignore el segundo argumento de Curry y codifique la nueva línea
Pruebe esto que curry el último argumento de cat
codificándolo con una función anónima. En realidad, no hacen uso de Curry
argumentos después de la primera:
catnip <- Curry(function(...) cat(..., "\n"))
# 2. Fabricación función por ganarse una función anónima
Aquí está una segunda solución que curte el último argumento de cat
mediante el uso de una función anónima que reordena los argumentos cat
's.
catnip2 <- Curry(function(last.arg, ...) cat(..., last.arg), "\n")
# test
catnip2("hi", "there")
# 3. Fabricación de la función deseada currying una función aún más básica
Quizás el verdadero objetivo de todo esto es ver cómo podemos tomar los componentes básicos y curry para obtener lo que queremos. Así podríamos definir un general last.arg.fun
y luego fabricar la función deseada por un curry de ella:
last.arg.fun <- function(FUN, last.arg, ...) FUN(..., last.arg)
catnip3 <- Curry(last.arg.fun, cat, "\n")
# test
last.arg.fun(cat, "\n", "hi", "there")
# test
catnip3("hi", "there")
Podríamos hacerlo en dos pasos si necesitábamos last.arg.cat
en algún momento:
last.arg.cat <- Curry(last.arg.fun, cat)
catnip4 <- Curry(last.arg.cat, "\n")
# test
last.arg.cat("\n", "hi", "there")
# test
catnip4("hi", "there")
Tenga en cuenta que cada una de las pruebas debería producir una línea diciendo hola allí terminó en una nueva línea.
EDITAR: más soluciones.
¡Gato al curry, yummmy! – John
Nifty responde a todas. Mi dominio de 'do.call' es incompleto pero progresa. Gracias :-) –