Это описательна (декларативная) парадигма программирования, которая означает, что программирование выполняется с помощью выражений или объявлений вместо предписаний. В функциональном коде выходное значение функции зависит только от аргументов, которые передаются функции, так что при вызове функции f дважды с одним и тем же значением аргумента x каждый раз получается один и тот же результат f (x). Это отличается от процедур, которые зависят от локального или глобального состояния, которые могут давать разные результаты в разное время при вызове с одинаковыми аргументами, но с другим состоянием программы. Устранение побочных эффектов, т.е. изменений в состоянии, которые не зависят от входных данных функции, может значительно облегчить понимание и прогнозирование поведения программы, что является одним из ключевых мотивов развития функционального программирования.