El problema es que estás hablando de paradigmas completamente diferentes de funciones de llamada, por lo que no está muy claro lo que quieres. R sólo se utiliza lo que en Fa # sería argumentos de tupla (nombrados en R), así que una forma de pensar que es trivialmente
fp = function(x, f) f(x)
que se realice la llamada así por ejemplo
> fp(4, print)
[1] 4
Esto es equivalente , pero no va a funcionar en caso de no tupple como 4 |> f x y
porque no hay tal cosa en R. se podría tratar de emular el comportamiento funcional F #, pero sería incómodo:
fp = function(x, f, ...) function(...) f(x, ...)
que la voluntad siempre sea funcional y por lo tanto el encadenamiento funcionará así por ejemplo
> tri = function(x, y, z) paste(x,y,z)
> fp("foo", fp("mar", tri))("bar")
[1] "mar foo bar"
pero dado que R no convierte las llamadas incompletas en funciones que no es realmente útil. En cambio, R tiene llamadas mucho más flexibles basadas en el concepto de tupla. Tenga en cuenta que R utiliza una mezcla de paradigma funcional e imperativo, no es puramente funcional para que no se realice valor del argumento coincidente etc.
Editar: ya ha cambiado la pregunta que usted está interesado en la sintaxis y sólo un caso especial, basta con sustituir fp
anterior con la notación infija:
`%>%` = function(x, f) f(x)
> 1:10 %>% range %>% mean
[1] 5.5
(Usando el operador de Ben;))
Ayudaría mucho si nos dijera un poco más claramente lo que se suponía que debía hacer este operador, así que no teníamos que buscar la información por nosotros mismos. Tal vez su pregunta lo dice, pero es demasiado telegráfico para mí. –