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