"Функциональное программирование описывает только операции, выполняемые на входах в программы, без использования временных переменных для хранения промежуточных результатов".
Вопрос заключается в том, как применять функциональное программирование и использовать асинхронные модули, которые используют обратные вызовы. В некоторых случаях у вас был обратный вызов для доступа к переменной, которая выполняет функцию, вызывающую ссылки на async, но сигнатура обратного вызова уже определена.
Пример:
function printSum(file,a){
//var fs =....
var c = a+b;
fs.readFile(file,function cb(err,result){
print(a+result);///but wait, I can't access a......
});
}
Конечно, я могу получить доступ к a, но это будет против парадигмы чистого функционального программирования