К настоящему времени хорошо известна теорема лямбда-исчисления, что любая функция, принимающая два или более аргумента, может быть записана посредством каррирования как цепочка функций, принимающих один аргумент:
# Pseudo-code for currying
f(x,y) -> f_curried(x)(y)
Это оказалось чрезвычайно эффективным не только для изучения поведения функций, но и для практического использования (Haskell и т. Д.).
Функции, возвращающие значения, однако, похоже, не обсуждаются. Программисты обычно сталкиваются с невозможностью вернуть более одного значения из функции, возвращая некоторый мета-объект (списки в R, структуры в C ++ и т. Д.). Он всегда казался мне чем-то вроде лабиринта, но полезного.
Например:
# R code for "faking" multiple return values
uselessFunc <- function(dat) {
model1 <- lm( y ~ x , data=dat )
return( list( coef=coef(model1), form=formula(model1) ) )
}
Вопросы