Each of these functions have an interface function(lambda, xj, ...), and
return smoothed values for xj. The output is expected to be ordered along an ordered lambda.
This means that the following is true:
x <- runif(100)
y <- runif(100)
ord <- sample.int(100)
sfun <- smoother_functions[[1]]
all(sfun(x, y) == sfun(x[ord], y[ord]))