Imported Upstream version 1.64.0
[platform/upstream/boost.git] / libs / phoenix / doc / html / index.html
1 <html>
2 <head>
3 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
4 <title>Chapter&#160;1.&#160;Phoenix 3.2.0</title>
5 <link rel="stylesheet" href="../../../../doc/src/boostbook.css" type="text/css">
6 <meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
7 <link rel="home" href="index.html" title="Chapter&#160;1.&#160;Phoenix 3.2.0">
8 <link rel="next" href="phoenix/release_notes.html" title="Release Notes">
9 </head>
10 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
11 <table cellpadding="2" width="100%"><tr>
12 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../boost.png"></td>
13 <td align="center"><a href="../../../../index.html">Home</a></td>
14 <td align="center"><a href="../../../../libs/libraries.htm">Libraries</a></td>
15 <td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
16 <td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
17 <td align="center"><a href="../../../../more/index.htm">More</a></td>
18 </tr></table>
19 <hr>
20 <div class="spirit-nav"><a accesskey="n" href="phoenix/release_notes.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a></div>
21 <div class="chapter">
22 <div class="titlepage"><div>
23 <div><h2 class="title">
24 <a name="phoenix"></a>Chapter&#160;1.&#160;Phoenix 3.2.0</h2></div>
25 <div><div class="author"><h3 class="author">
26 <span class="firstname">Joel</span> <span class="surname">de Guzman</span>
27 </h3></div></div>
28 <div><div class="author"><h3 class="author">
29 <span class="firstname">Dan</span> <span class="surname">Marsden</span>
30 </h3></div></div>
31 <div><div class="author"><h3 class="author">
32 <span class="firstname">Thomas</span> <span class="surname">Heller</span>
33 </h3></div></div>
34 <div><div class="author"><h3 class="author">
35 <span class="firstname">John</span> <span class="surname">Fletcher</span>
36 </h3></div></div>
37 <div><p class="copyright">Copyright &#169; 2002-2005, 2010, 2014, 2015 Joel de Guzman, Dan Marsden, Thomas
38       Heller, John Fletcher</p></div>
39 <div><div class="legalnotice">
40 <a name="phoenix.legal"></a><p>
41         Distributed under the Boost Software License, Version 1.0. (See accompanying
42         file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
43       </p>
44 </div></div>
45 </div></div>
46 <div class="toc">
47 <p><b>Table of Contents</b></p>
48 <dl class="toc">
49 <dt><span class="section"><a href="phoenix/release_notes.html">Release Notes</a></span></dt>
50 <dt><span class="section"><a href="phoenix/what_s_new.html">What's New</a></span></dt>
51 <dd><dl>
52 <dt><span class="section"><a href="phoenix/what_s_new/phoenix___warning_on__lambda_and_let_.html">Phoenix
53       - warning on <span class="bold"><strong>lambda and let</strong></span></a></span></dt>
54 <dt><span class="section"><a href="phoenix/what_s_new/phoenix_3_2_0__boost_1_58_0_.html">Phoenix
55       3.2.0 (Boost 1.58.0)</a></span></dt>
56 <dt><span class="section"><a href="phoenix/what_s_new/phoenix_3_1_1.html">Phoenix 3.1.1</a></span></dt>
57 <dt><span class="section"><a href="phoenix/what_s_new/phoenix_3_1_0.html">Phoenix 3.1.0</a></span></dt>
58 <dt><span class="section"><a href="phoenix/what_s_new/phoenix_3_0_6__boost_1_57_0_.html">Phoenix
59       3.0.6 (Boost 1.57.0)</a></span></dt>
60 <dt><span class="section"><a href="phoenix/what_s_new/phoenix_3_0_5.html">Phoenix 3.0.5</a></span></dt>
61 <dt><span class="section"><a href="phoenix/what_s_new/phoenix_3_0.html">Phoenix 3.0</a></span></dt>
62 </dl></dd>
63 <dt><span class="section"><a href="phoenix/introduction.html">Introduction</a></span></dt>
64 <dt><span class="section"><a href="phoenix/starter_kit.html">Starter Kit</a></span></dt>
65 <dd><dl>
66 <dt><span class="section"><a href="phoenix/starter_kit/values.html">Values</a></span></dt>
67 <dt><span class="section"><a href="phoenix/starter_kit/references.html">References</a></span></dt>
68 <dt><span class="section"><a href="phoenix/starter_kit/arguments.html">Arguments</a></span></dt>
69 <dt><span class="section"><a href="phoenix/starter_kit/lazy_operators.html">Lazy Operators</a></span></dt>
70 <dt><span class="section"><a href="phoenix/starter_kit/lazy_statements.html">Lazy Statements</a></span></dt>
71 <dt><span class="section"><a href="phoenix/starter_kit/construct__new__delete__casts.html">Construct,
72       New, Delete, Casts</a></span></dt>
73 <dt><span class="section"><a href="phoenix/starter_kit/lazy_functions.html">Lazy Functions</a></span></dt>
74 <dt><span class="section"><a href="phoenix/starter_kit/more.html">More</a></span></dt>
75 </dl></dd>
76 <dt><span class="section"><a href="phoenix/basics.html">Basics</a></span></dt>
77 <dt><span class="section"><a href="phoenix/organization.html">Organization</a></span></dt>
78 <dt><span class="section"><a href="phoenix/actor.html">Actor</a></span></dt>
79 <dt><span class="section"><a href="phoenix/modules.html">Modules</a></span></dt>
80 <dd><dl>
81 <dt><span class="section"><a href="phoenix/modules/core.html">Core</a></span></dt>
82 <dd><dl>
83 <dt><span class="section"><a href="phoenix/modules/core/values.html">Values</a></span></dt>
84 <dt><span class="section"><a href="phoenix/modules/core/references.html">References</a></span></dt>
85 <dt><span class="section"><a href="phoenix/modules/core/arguments.html">Arguments</a></span></dt>
86 <dt><span class="section"><a href="phoenix/modules/core/nothing.html">Nothing</a></span></dt>
87 </dl></dd>
88 <dt><span class="section"><a href="phoenix/modules/function.html">Function</a></span></dt>
89 <dd><dl><dt><span class="section"><a href="phoenix/modules/function/adapting_functions.html">Adapting
90         Functions</a></span></dt></dl></dd>
91 <dt><span class="section"><a href="phoenix/modules/operator.html">Operator</a></span></dt>
92 <dt><span class="section"><a href="phoenix/modules/statement.html">Statement</a></span></dt>
93 <dd><dl>
94 <dt><span class="section"><a href="phoenix/modules/statement/block_statement.html">Block Statement</a></span></dt>
95 <dt><span class="section"><a href="phoenix/modules/statement/if__statement.html">if_ Statement</a></span></dt>
96 <dt><span class="section"><a href="phoenix/modules/statement/___if_else_____statement.html">if_else_ Statement</a></span></dt>
97 <dt><span class="section"><a href="phoenix/modules/statement/switch__statement.html">switch_
98         Statement</a></span></dt>
99 <dt><span class="section"><a href="phoenix/modules/statement/while__statement.html">while_
100         Statement</a></span></dt>
101 <dt><span class="section"><a href="phoenix/modules/statement/___do_while_____statement.html">do_while_ Statement</a></span></dt>
102 <dt><span class="section"><a href="phoenix/modules/statement/for_statement.html">for_ Statement</a></span></dt>
103 <dt><span class="section"><a href="phoenix/modules/statement/try__catch__statement.html">try_
104         catch_ Statement</a></span></dt>
105 <dt><span class="section"><a href="phoenix/modules/statement/throw_.html">throw_</a></span></dt>
106 </dl></dd>
107 <dt><span class="section"><a href="phoenix/modules/object.html">Object</a></span></dt>
108 <dd><dl>
109 <dt><span class="section"><a href="phoenix/modules/object/construction.html">Construction</a></span></dt>
110 <dt><span class="section"><a href="phoenix/modules/object/new.html">New</a></span></dt>
111 <dt><span class="section"><a href="phoenix/modules/object/delete.html">Delete</a></span></dt>
112 <dt><span class="section"><a href="phoenix/modules/object/casts.html">Casts</a></span></dt>
113 </dl></dd>
114 <dt><span class="section"><a href="phoenix/modules/scope.html">Scope</a></span></dt>
115 <dd><dl>
116 <dt><span class="section"><a href="phoenix/modules/scope/local_variables.html">Local Variables</a></span></dt>
117 <dt><span class="section"><a href="phoenix/modules/scope/let.html">let</a></span></dt>
118 <dt><span class="section"><a href="phoenix/modules/scope/lambda.html">lambda</a></span></dt>
119 </dl></dd>
120 <dt><span class="section"><a href="phoenix/modules/bind.html">Bind</a></span></dt>
121 <dd><dl>
122 <dt><span class="section"><a href="phoenix/modules/bind/binding_function_objects.html">Binding
123         Function Objects</a></span></dt>
124 <dt><span class="section"><a href="phoenix/modules/bind/binding_functions.html">Binding Functions</a></span></dt>
125 <dt><span class="section"><a href="phoenix/modules/bind/binding_member_functions.html">Binding
126         Member Functions</a></span></dt>
127 <dt><span class="section"><a href="phoenix/modules/bind/binding_member_variables.html">Binding
128         Member Variables</a></span></dt>
129 <dt><span class="section"><a href="phoenix/modules/bind/compatibility_with_boost_bind.html">Compatibility
130         with Boost.Bind</a></span></dt>
131 </dl></dd>
132 <dt><span class="section"><a href="phoenix/modules/stl.html">STL</a></span></dt>
133 <dd><dl>
134 <dt><span class="section"><a href="phoenix/modules/stl/container.html">Container</a></span></dt>
135 <dt><span class="section"><a href="phoenix/modules/stl/algorithm.html">Algorithm</a></span></dt>
136 </dl></dd>
137 </dl></dd>
138 <dt><span class="section"><a href="phoenix/inside.html">Inside Phoenix</a></span></dt>
139 <dd><dl>
140 <dt><span class="section"><a href="phoenix/inside/actor.html">Actors in Detail</a></span></dt>
141 <dt><span class="section"><a href="phoenix/inside/expression.html">Phoenix Expressions</a></span></dt>
142 <dd><dl><dt><span class="section"><a href="phoenix/inside/expression/boilerplate_macros.html">Boilerplate
143         Macros</a></span></dt></dl></dd>
144 <dt><span class="section"><a href="phoenix/inside/actions.html">More on Actions</a></span></dt>
145 <dt><span class="section"><a href="phoenix/inside/rules.html">Predefined Expressions and Rules</a></span></dt>
146 <dt><span class="section"><a href="phoenix/inside/custom_terminals.html">Custom Terminals</a></span></dt>
147 <dt><span class="section"><a href="phoenix/inside/placeholder_unification.html">Placeholder Unification</a></span></dt>
148 </dl></dd>
149 <dt><span class="section"><a href="phoenix/examples.html">Advanced Examples</a></span></dt>
150 <dd><dl>
151 <dt><span class="section"><a href="phoenix/examples/extending_actors.html">Extending Actors</a></span></dt>
152 <dt><span class="section"><a href="phoenix/examples/adding_an_expression.html">Adding an expression</a></span></dt>
153 <dt><span class="section"><a href="phoenix/examples/transforming_the_expression_tree.html">Transforming
154       the Expression Tree</a></span></dt>
155 </dl></dd>
156 <dt><span class="section"><a href="phoenix/lazy_list.html">Lazy List</a></span></dt>
157 <dd><dl>
158 <dt><span class="section"><a href="phoenix/lazy_list/background.html">Background</a></span></dt>
159 <dt><span class="section"><a href="phoenix/lazy_list/what_is_provided.html">What is provided</a></span></dt>
160 <dt><span class="section"><a href="phoenix/lazy_list/tutorial_with_examples.html">Tutorial with
161       examples</a></span></dt>
162 <dd><dl>
163 <dt><span class="section"><a href="phoenix/lazy_list/tutorial_with_examples/arithmetic_functions.html">Arithmetic
164         functions</a></span></dt>
165 <dt><span class="section"><a href="phoenix/lazy_list/tutorial_with_examples/list_generation.html">List
166         Generation</a></span></dt>
167 </dl></dd>
168 <dt><span class="section"><a href="phoenix/lazy_list/exceptions.html">Exceptions</a></span></dt>
169 <dt><span class="section"><a href="phoenix/lazy_list/implementation_details.html">Implementation
170       Details</a></span></dt>
171 <dt><span class="section"><a href="phoenix/lazy_list/testing.html">Testing</a></span></dt>
172 <dt><span class="section"><a href="phoenix/lazy_list/where_next_.html">Where Next?</a></span></dt>
173 </dl></dd>
174 <dt><span class="section"><a href="phoenix/maintenance.html">Maintenance</a></span></dt>
175 <dd><dl>
176 <dt><span class="section"><a href="phoenix/maintenance/background.html">Background</a></span></dt>
177 <dt><span class="section"><a href="phoenix/maintenance/my_understanding_of_how_maintenance_works.html">My
178       Understanding of how maintenance works</a></span></dt>
179 <dt><span class="section"><a href="phoenix/maintenance/method_in_use.html">Method in use</a></span></dt>
180 <dt><span class="section"><a href="phoenix/maintenance/experience.html">Experience</a></span></dt>
181 <dd><dl>
182 <dt><span class="section"><a href="phoenix/maintenance/experience/maintenance_tools.html">Maintenance
183         Tools</a></span></dt>
184 <dt><span class="section"><a href="phoenix/maintenance/experience/bugs_to_be_fixed.html">Bugs
185         to be fixed</a></span></dt>
186 <dt><span class="section"><a href="phoenix/maintenance/experience/compilers.html">Compilers</a></span></dt>
187 </dl></dd>
188 </dl></dd>
189 <dt><span class="section"><a href="phoenix/wrap_up.html">Wrap Up</a></span></dt>
190 <dt><span class="section"><a href="phoenix/acknowledgments.html">Acknowledgments</a></span></dt>
191 <dt><span class="section"><a href="phoenix/references.html">References</a></span></dt>
192 </dl>
193 </div>
194 <h2>
195 <a name="phoenix.h0"></a>
196     <span class="phrase"><a name="phoenix.preface"></a></span><a class="link" href="index.html#phoenix.preface">Preface</a>
197   </h2>
198 <div class="blockquote"><blockquote class="blockquote"><p>
199       <span class="emphasis"><em>Functional programming is so called because a program consists entirely
200       of functions. The main program itself is written as a function which receives
201       the program's input as its argument and delivers the program's output as its
202       result. Typically the main function is defined in terms of other functions,
203       which in turn are defined in terms of still more functions until at the bottom
204       level the functions are language primitives.</em></span>
205     </p></blockquote></div>
206 <div class="blockquote"><blockquote class="blockquote"><p>
207       <span class="bold"><strong>John Hughes</strong></span>-- <span class="emphasis"><em>Why Functional Programming
208       Matters</em></span>
209     </p></blockquote></div>
210 <p>
211     <span class="inlinemediaobject"><img src="images/lambda_cpp.png"></span>
212   </p>
213 <h3>
214 <a name="phoenix.h1"></a>
215     <span class="phrase"><a name="phoenix.description"></a></span><a class="link" href="index.html#phoenix.description">Description</a>
216   </h3>
217 <p>
218     Phoenix enables Functional Programming (FP) in C++. The design and implementation
219     of Phoenix is highly influenced by <a href="http://cgi.di.uoa.gr/~smaragd/fc++/" target="_top">FC++</a>
220     by Yannis Smaragdakis and Brian McNamara and the <a href="http://www.boost.org/libs/lambda/doc/index.html" target="_top">BLL</a>
221     (Boost Lambda Library) by Jaakko Jaarvi and Gary Powell. Phoenix is a blend of
222     FC++ and BLL using the implementation techniques used in the <a href="http://spirit.sourceforge.net" target="_top">Spirit</a>
223     inline parser.
224   </p>
225 <p>
226     Phoenix is a header only library. It is extremely modular by design. One can
227     extract and use only a small subset of the full library, literally tearing the
228     library into small pieces, without fear that the pieces won't work anymore. The
229     library is organized in highly independent modules and layers.
230   </p>
231 <h3>
232 <a name="phoenix.h2"></a>
233     <span class="phrase"><a name="phoenix.how_to_use_this_manual"></a></span><a class="link" href="index.html#phoenix.how_to_use_this_manual">How
234     to use this manual</a>
235   </h3>
236 <p>
237     The Phoenix library is organized in logical modules. This documentation provides
238     a user's guide and reference for each module in the library. A simple and clear
239     code example is worth a hundred lines of documentation; therefore, the user's
240     guide is presented with abundant examples annotated and explained in step-wise
241     manner. The user's guide is based on examples: lots of them.
242   </p>
243 <p>
244     As much as possible, forward information (i.e. citing a specific piece of information
245     that has not yet been discussed) is avoided in the user's manual portion of each
246     module. In many cases, though, it is unavoidable that advanced but related topics
247     not be interspersed with the normal flow of discussion. To alleviate this problem,
248     topics categorized as "advanced" may be skipped at first reading.
249   </p>
250 <p>
251     Some icons are used to mark certain topics indicative of their relevance. These
252     icons precede some text to indicate:
253   </p>
254 <div class="table">
255 <a name="phoenix.t0"></a><p class="title"><b>Table&#160;1.1.&#160;Icons</b></p>
256 <div class="table-contents"><table class="table" summary="Icons">
257 <colgroup>
258 <col>
259 <col>
260 <col>
261 </colgroup>
262 <thead><tr>
263 <th>
264             <p>
265               Icon
266             </p>
267           </th>
268 <th>
269             <p>
270               Name
271             </p>
272           </th>
273 <th>
274             <p>
275               Meaning
276             </p>
277           </th>
278 </tr></thead>
279 <tbody>
280 <tr>
281 <td>
282             <p>
283               <span class="inlinemediaobject"><img src="images/note.png"></span>
284             </p>
285           </td>
286 <td>
287             <p>
288               Note
289             </p>
290           </td>
291 <td>
292             <p>
293               Information provided is auxiliary but will give the reader a deeper
294               insight into a specific topic. May be skipped.
295             </p>
296           </td>
297 </tr>
298 <tr>
299 <td>
300             <p>
301               <span class="inlinemediaobject"><img src="images/alert.png"></span>
302             </p>
303           </td>
304 <td>
305             <p>
306               Alert
307             </p>
308           </td>
309 <td>
310             <p>
311               Information provided is of utmost importance.
312             </p>
313           </td>
314 </tr>
315 <tr>
316 <td>
317             <p>
318               <span class="inlinemediaobject"><img src="images/tip.png"></span>
319             </p>
320           </td>
321 <td>
322             <p>
323               Tip
324             </p>
325           </td>
326 <td>
327             <p>
328               A potentially useful and helpful piece of information.
329             </p>
330           </td>
331 </tr>
332 </tbody>
333 </table></div>
334 </div>
335 <br class="table-break"><div class="sidebar">
336 <div class="titlepage"><div><div><p class="title"><b></b></p></div></div></div>
337 <p>
338     <span class="inlinemediaobject"><img src="images/note.png"></span>
339     Unless otherwise noted <code class="computeroutput"><span class="keyword">using</span> <span class="keyword">namespace</span>
340     <span class="identifier">boost</span><span class="special">::</span><span class="identifier">phoenix</span><span class="special">;</span></code> is
341     assumed
342   </p>
343 </div>
344 <h3>
345 <a name="phoenix.h3"></a>
346     <span class="phrase"><a name="phoenix._emphasis_role__bold___emphasis____to_joel_s_dear_daughter__phoenix__emphasis___emphasis_"></a></span><a class="link" href="index.html#phoenix._emphasis_role__bold___emphasis____to_joel_s_dear_daughter__phoenix__emphasis___emphasis_"><span class="bold"><strong><span class="emphasis"><em>...To Joel's dear daughter, Phoenix</em></span></strong></span></a>
347   </h3>
348 </div>
349 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
350 <td align="left"><p><small>Last revised: April 17, 2017 at 02:26:52 GMT</small></p></td>
351 <td align="right"><div class="copyright-footer"></div></td>
352 </tr></table>
353 <hr>
354 <div class="spirit-nav"><a accesskey="n" href="phoenix/release_notes.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a></div>
355 </body>
356 </html>