]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
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 | |
14 | functions. The main program itself is written as a function which receives the | |
15 | program's input as its argument and delivers the program's output as its result. | |
16 | Typically the main function is defined in terms of other functions, which in | |
17 | turn are defined in terms of still more functions until at the bottom level the | |
18 | functions are language primitives.]] | |
19 | ||
20 | [:*John Hughes*-- /Why Functional Programming Matters/] | |
21 | ||
22 | [$images/lambda_cpp.png] | |
23 | ||
24 | [h2 Description] | |
25 | ||
26 | Phoenix enables Functional Programming (FP) in C++. The design and | |
27 | implementation of Phoenix is highly influenced by __fcpp__ by Yannis Smaragdakis | |
28 | and Brian McNamara and the __bll__ (Boost Lambda Library) by Jaakko Jaarvi and | |
29 | Gary Powell. Phoenix is a blend of FC++ and BLL using the implementation | |
30 | techniques used in the __spirit__ inline parser. | |
31 | ||
32 | Phoenix is a header only library. It is extremely modular by design. One can | |
33 | extract and use only a small subset of the full library, literally tearing the | |
34 | library into small pieces, without fear that the pieces won't work anymore. The | |
35 | library is organized in highly independent modules and layers. | |
36 | ||
37 | [h2 How to use this manual] | |
38 | ||
39 | The Phoenix library is organized in logical modules. This documentation | |
40 | provides a user's guide and reference for each module in the library. A simple | |
41 | and clear code example is worth a hundred lines of documentation; therefore, the | |
42 | user's guide is presented with abundant examples annotated and explained in | |
43 | step-wise manner. The user's guide is based on examples: lots of them. | |
44 | ||
45 | As much as possible, forward information (i.e. citing a specific piece of | |
46 | information that has not yet been discussed) is avoided in the user's manual | |
47 | portion of each module. In many cases, though, it is unavoidable that advanced | |
48 | but related topics not be interspersed with the normal flow of discussion. To | |
49 | alleviate this problem, topics categorized as "advanced" may be skipped at first | |
50 | reading. | |
51 | ||
52 | Some icons are used to mark certain topics indicative of their relevance. These | |
53 | icons 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] |