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