Hello, I would like to compose a series of functions each taking one argument. Let us assume the values returned by the functions are contained within the domains. So b<-function(r) r[-1] compose("b","b") b(b(x)) This is my solution, is there something succinct ? Regards Saptarshi compose <- function(...){ fns0 <- list(...) g <- function(x) {} compose2 <- function(fns){ if(length(fns)==1){ as.call(list(as.name(fns[[1]]),quote(x))) }else{ as.call( list( as.name(fns[[ length(fns) ]]), compose2( fns[1:(length(fns)-1)]))) } } body <- compose2(fns0) body(g,envir=parent.frame()) <- body } b <- function(r) r[-1] j=compose("b","b")