123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- [/==============================================================================
- 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 Preface]
- [h1 Preface]
- [:['Functional programming is so called because a program consists entirely of
- functions. The main program itself is written as a function which receives the
- program's input as its argument and delivers the program's output as its result.
- Typically the main function is defined in terms of other functions, which in
- turn are defined in terms of still more functions until at the bottom level the
- functions are language primitives.]]
- [:*John Hughes*-- /Why Functional Programming Matters/]
- [$images/lambda_cpp.png]
- [h2 Description]
- Phoenix enables Functional Programming (FP) in C++. The design and
- implementation of Phoenix is highly influenced by __fcpp__ by Yannis Smaragdakis
- and Brian McNamara and the __bll__ (Boost Lambda Library) by Jaakko Jaarvi and
- Gary Powell. Phoenix is a blend of FC++ and BLL using the implementation
- techniques used in the __spirit__ inline parser.
- Phoenix is a header only library. It is extremely modular by design. One can
- extract and use only a small subset of the full library, literally tearing the
- library into small pieces, without fear that the pieces won't work anymore. The
- library is organized in highly independent modules and layers.
- [h2 How to use this manual]
- The Phoenix library is organized in logical modules. This documentation
- provides a user's guide and reference for each module in the library. A simple
- and clear code example is worth a hundred lines of documentation; therefore, the
- user's guide is presented with abundant examples annotated and explained in
- step-wise manner. The user's guide is based on examples: lots of them.
- As much as possible, forward information (i.e. citing a specific piece of
- information that has not yet been discussed) is avoided in the user's manual
- portion of each module. In many cases, though, it is unavoidable that advanced
- but related topics be interspersed with the normal flow of discussion. To
- alleviate this problem, topics categorized as "advanced" may be skipped at first
- reading.
- Some icons are used to mark certain topics indicative of their relevance. These
- icons precede some text to indicate:
- [table Icons
- [[Icon] [Name] [Meaning]]
- [[__note__] [Note] [Information provided is auxiliary but will
- give the reader a deeper insight into a specific
- topic. May be skipped.]]
- [[__alert__] [Alert] [Information provided is of utmost importance.]]
- [[__tip__] [Tip] [A potentially useful and helpful piece of
- information.]]
- ]
- [blurb __note__ Unless otherwise noted `using namespace boost::phoenix;` is assumed]
- [h2 [*/...To Joel's dear daughter, Phoenix/]]
- [/endsect]
|