# 1. Ignora il secondo argomento di Curry e codice hard il newline
Prova questo che alza l'ultimo argomento di cat
codificandolo su una funzione anonima. E 'in realtà non fa uso di Curry
argomenti dopo il primo:
catnip <- Curry(function(...) cat(..., "\n"))
# 2. funzione di produzione per accattivarsi una funzione anonima
Ecco una seconda soluzione, che striglia l'ultimo argomento di cat
utilizzando una funzione anonima che riordina gli argomenti s' cat
.
catnip2 <- Curry(function(last.arg, ...) cat(..., last.arg), "\n")
# test
catnip2("hi", "there")
# 3. Produzione funzione desiderata facendo una funzione ancora più semplice
Forse il vero punto di tutto questo è vedere come possiamo prendere i componenti di base e Curry per ottenere ciò che vogliamo. Così potremmo definire un generale last.arg.fun
e quindi produrre la funzione desiderata da un curry di esso:
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")
Potremmo farlo in due fasi se abbiamo bisogno last.arg.cat
ad un certo punto:
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")
noti che ciascuno dei test dovrebbe produrre una riga che dice ciao finito in una nuova riga.
EDIT: più soluzioni.
Gatto al curry, gnam! – John
Nifty risponde a tutti. La mia padronanza di 'do.call' è incompleta ma progressiva. Grazie :-) –