1[/============================================================================== 2 Copyright (C) 2001-2010 Joel de Guzman 3 Copyright (C) 2001-2005 Dan Marsden 4 Copyright (C) 2001-2010 Thomas Heller 5 6 Distributed under the Boost Software License, Version 1.0. (See accompanying 7 file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 8===============================================================================/] 9 10[section Introduction] 11 12[$images/banner.png] 13 14The Phoenix library enables FP techniques such as higher order functions, 15/lambda/ (unnamed functions), /currying/ (partial function application) and lazy 16evaluation in C++. The focus is more on usefulness and practicality than purity, 17elegance and strict adherence to FP principles. 18 19FP is a programming discipline that is not at all tied to a specific language. 20FP as a programming discipline can, in fact, be applied to many programming 21languages. In the realm of C++ for instance, we are seeing more FP techniques 22being applied. C++ is sufficiently rich to support at least some of the most 23important facets of FP. C++ is a multiparadigm programming language. It is not 24only procedural. It is not only object oriented. Beneath the core of the 25standard C++ library, a closer look into STL gives us a glimpse of FP already in 26place. It is obvious that the authors of STL know and practice FP. In the near 27future, we shall surely see more FP trickle down into the mainstream. 28 29The truth is, most of the FP techniques can coexist quite well with the standard 30object oriented and imperative programming paradigms. When we are using STL 31algorithms and functors (function objects) for example, we are already doing FP. 32Phoenix is an evolutionary next step. 33 34[endsect] 35