Ответ 1
Моделирование парадигмы функционального программирования как отношение между множествами и, следовательно, по своей сути декларативно. Однако на практике мы часто думаем о том, что функции необходимы, т.е. Вы вводите входное значение и получаете выходное значение, как и в случае с процедурой. С этой точки зрения характеристическое свойство функции состоит в том, что она не имеет побочных эффектов. Из-за двусмысленности терминов мы называем такую функцию чистой, а язык, который имеет только чистые функции, будет чисто функциональным языком.
Однако не все функциональные языки чисты: функциональный язык - это язык с синтаксисом и семантикой, который позволяет программисту эффективно использовать функциональную парадигму. Некоторые из концепций, которые делают возможным использование парадигмы, включают, среди прочего, лямбда-выражения с лексическим замыканием, функции более высокого порядка, варианты типов и сопоставление образцов, ленивую оценку, тип-вывод (в случае статически типизированных языков).
Это ни в коем случае не является официальным списком, и язык вполне может функционировать без предоставления всех или даже большинства из них, но если язык делает это - то есть делает их пригодными для использования без необходимости перескакивать через крупные обручи - их присутствие сильный индикатор того, что язык следует считать функциональным.
Я не знаю достаточно о Boost, чтобы решить, является ли С++ 03 + Boost жизнеспособным функциональным языком, но С++ 0x определенно делает С++ более функциональным, возможно, даже подталкивая его к субъективной границе области функциональных языков.
Как и в стороне, те же соображения применимы и к другим парадигмам программирования: С++ также не является чисто объектно-ориентированным языком (действительно, очень сложно - возможно, даже теоретически невозможно - создать язык, который является чисто функциональным и чисто объектным -ориентированный), и большинство функций, которые обычно ассоциируются с OO-языками (классы, наследование, инкапсуляция), на самом деле никоим образом не являются авторитарными...