blob: 7aa4bb0ef2a96abd69445f444e689ddce43d0e56 [file] [log] [blame]
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Chapter&#160;1.&#160;Phoenix 2.0</title>
<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
<link rel="home" href="index.html" title="Chapter&#160;1.&#160;Phoenix 2.0">
<link rel="next" href="phoenix/introduction.html" title="Introduction">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
<td align="center"><a href="../../../../../index.html">Home</a></td>
<td align="center"><a href="../../../../../libs/libraries.htm">Libraries</a></td>
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
<td align="center"><a href="../../../../../more/index.htm">More</a></td>
</tr></table>
<hr>
<div class="spirit-nav"><a accesskey="n" href="phoenix/introduction.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a></div>
<div class="chapter">
<div class="titlepage"><div>
<div><h2 class="title">
<a name="phoenix"></a>Chapter&#160;1.&#160;Phoenix 2.0</h2></div>
<div><div class="author"><h3 class="author">
<span class="firstname">Joel</span> <span class="surname">de Guzman</span>
</h3></div></div>
<div><div class="author"><h3 class="author">
<span class="firstname">Dan</span> <span class="surname">Marsden</span>
</h3></div></div>
<div><p class="copyright">Copyright &#169; 2002-2005 Joel
de Guzman, Dan Marsden</p></div>
<div><div class="legalnotice">
<a name="id826177"></a><p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
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>)
</p>
</div></div>
</div></div>
<div class="toc">
<p><b>Table of Contents</b></p>
<dl>
<dt><span class="section"><a href="index.html#phoenix.preface">Preface</a></span></dt>
<dt><span class="section"><a href="phoenix/introduction.html">Introduction</a></span></dt>
<dt><span class="section"><a href="phoenix/starter_kit.html">Starter Kit</a></span></dt>
<dd><dl>
<dt><span class="section"><a href="phoenix/starter_kit.html#phoenix.starter_kit.values">Values</a></span></dt>
<dt><span class="section"><a href="phoenix/starter_kit.html#phoenix.starter_kit.references">References</a></span></dt>
<dt><span class="section"><a href="phoenix/starter_kit.html#phoenix.starter_kit.arguments">Arguments</a></span></dt>
<dt><span class="section"><a href="phoenix/starter_kit.html#phoenix.starter_kit.composites">Composites</a></span></dt>
<dt><span class="section"><a href="phoenix/starter_kit.html#phoenix.starter_kit.lazy_operators">Lazy Operators</a></span></dt>
<dt><span class="section"><a href="phoenix/starter_kit.html#phoenix.starter_kit.lazy_statements">Lazy Statements</a></span></dt>
<dt><span class="section"><a href="phoenix/starter_kit.html#phoenix.starter_kit.construct__new__delete__casts">Construct,
New, Delete, Casts</a></span></dt>
<dt><span class="section"><a href="phoenix/starter_kit.html#phoenix.starter_kit.lazy_functions">Lazy Functions</a></span></dt>
<dt><span class="section"><a href="phoenix/starter_kit.html#phoenix.starter_kit.more">More</a></span></dt>
</dl></dd>
<dt><span class="section"><a href="phoenix/basics.html">Basics</a></span></dt>
<dt><span class="section"><a href="phoenix/organization.html">Organization</a></span></dt>
<dt><span class="section"><a href="phoenix/actors.html">Actors</a></span></dt>
<dt><span class="section"><a href="phoenix/primitives.html">Primitives</a></span></dt>
<dd><dl>
<dt><span class="section"><a href="phoenix/primitives.html#phoenix.primitives.arguments">Arguments</a></span></dt>
<dt><span class="section"><a href="phoenix/primitives.html#phoenix.primitives.values">Values</a></span></dt>
<dt><span class="section"><a href="phoenix/primitives.html#phoenix.primitives.references">References</a></span></dt>
<dt><span class="section"><a href="phoenix/primitives.html#phoenix.primitives.constant_references">Constant References</a></span></dt>
<dt><span class="section"><a href="phoenix/primitives.html#phoenix.primitives.nothing">Nothing</a></span></dt>
</dl></dd>
<dt><span class="section"><a href="phoenix/composite.html">Composite</a></span></dt>
<dd><dl>
<dt><span class="section"><a href="phoenix/composite.html#phoenix.composite.function">Function</a></span></dt>
<dt><span class="section"><a href="phoenix/composite.html#phoenix.composite.operator">Operator</a></span></dt>
<dt><span class="section"><a href="phoenix/composite.html#phoenix.composite.statement">Statement</a></span></dt>
<dt><span class="section"><a href="phoenix/composite.html#phoenix.composite.object">Object</a></span></dt>
<dt><span class="section"><a href="phoenix/composite.html#phoenix.composite.scope">Scope</a></span></dt>
<dt><span class="section"><a href="phoenix/composite.html#phoenix.composite.bind">Bind</a></span></dt>
</dl></dd>
<dt><span class="section"><a href="phoenix/container.html">Container</a></span></dt>
<dt><span class="section"><a href="phoenix/algorithm.html">Algorithm</a></span></dt>
<dt><span class="section"><a href="phoenix/inside_phoenix.html">Inside Phoenix</a></span></dt>
<dd><dl>
<dt><span class="section"><a href="phoenix/inside_phoenix.html#phoenix.inside_phoenix.actors_in_detail">Actors In Detail</a></span></dt>
<dt><span class="section"><a href="phoenix/inside_phoenix.html#phoenix.inside_phoenix.actor_example">Actor Example</a></span></dt>
<dt><span class="section"><a href="phoenix/inside_phoenix.html#phoenix.inside_phoenix.composites_in_detail">Composites
In Detail</a></span></dt>
<dt><span class="section"><a href="phoenix/inside_phoenix.html#phoenix.inside_phoenix.composing">Composing</a></span></dt>
<dt><span class="section"><a href="phoenix/inside_phoenix.html#phoenix.inside_phoenix.extending">Extending</a></span></dt>
</dl></dd>
<dt><span class="section"><a href="phoenix/wrap_up.html">Wrap Up</a></span></dt>
<dt><span class="section"><a href="phoenix/acknowledgement.html">Acknowledgement</a></span></dt>
<dt><span class="section"><a href="phoenix/references.html">References</a></span></dt>
</dl>
</div>
<div class="section">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="phoenix.preface"></a><a class="link" href="index.html#phoenix.preface" title="Preface">Preface</a>
</h2></div></div></div>
<div class="blockquote"><blockquote class="blockquote"><p>
<span class="emphasis"><em>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.</em></span>
</p></blockquote></div>
<div class="blockquote"><blockquote class="blockquote"><p>
<span class="bold"><strong>John Hughes</strong></span>-- <span class="emphasis"><em>Why Functional Programming
Matters</em></span>
</p></blockquote></div>
<p>
<span class="inlinemediaobject"><img src="images/lambda_cpp.png" alt="lambda_cpp"></span>
</p>
<a name="phoenix.preface.description"></a><h3>
<a name="id826250"></a>
<a class="link" href="index.html#phoenix.preface.description">Description</a>
</h3>
<p>
Phoenix enables Functional Programming (FP) in C++. The design and implementation
of Phoenix is highly influenced by <a href="http://www.cc.gatech.edu/~yannis/fc++/" target="_top">FC++</a>
by Yannis Smaragdakis and Brian McNamara and the <a href="http://www.boost.org/libs/lambda/doc/index.html" target="_top">BLL</a>
(Boost Lambda Library) by Jaakko Jaarvi and Gary Powell. Phoenix is a blend
of FC++ and BLL using the implementation techniques used in the <a href="http://spirit.sourceforge.net" target="_top">Spirit</a>
inline parser. Phoenix version 2, this version, will probably be the last release
of the library. Phoenix v2 will be the basis of the Phoenix and <a href="http://www.boost.org/libs/lambda/doc/index.html" target="_top">BLL</a>
merger.
</p>
<p>
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.
</p>
<a name="phoenix.preface.how_to_use_this_manual"></a><h3>
<a name="id826291"></a>
<a class="link" href="index.html#phoenix.preface.how_to_use_this_manual">How to use this manual</a>
</h3>
<p>
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.
</p>
<p>
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 not be interspersed with the normal flow of discussion. To alleviate
this problem, topics categorized as "advanced" may be skipped at
first reading.
</p>
<p>
Some icons are used to mark certain topics indicative of their relevance. These
icons precede some text to indicate:
</p>
<div class="table">
<a name="id826311"></a><p class="title"><b>Table&#160;1.1.&#160;Icons</b></p>
<div class="table-contents"><table class="table" summary="Icons">
<colgroup>
<col>
<col>
<col>
</colgroup>
<thead><tr>
<th>
<p>
Icon
</p>
</th>
<th>
<p>
Name
</p>
</th>
<th>
<p>
Meaning
</p>
</th>
</tr></thead>
<tbody>
<tr>
<td>
<p>
<span class="inlinemediaobject"><img src="images/note.png" alt="note"></span>
</p>
</td>
<td>
<p>
Note
</p>
</td>
<td>
<p>
Information provided is auxiliary but will give the reader a deeper
insight into a specific topic. May be skipped.
</p>
</td>
</tr>
<tr>
<td>
<p>
<span class="inlinemediaobject"><img src="images/alert.png" alt="alert"></span>
</p>
</td>
<td>
<p>
Alert
</p>
</td>
<td>
<p>
Information provided is of utmost importance.
</p>
</td>
</tr>
<tr>
<td>
<p>
<span class="inlinemediaobject"><img src="images/tip.png" alt="tip"></span>
</p>
</td>
<td>
<p>
Tip
</p>
</td>
<td>
<p>
A potentially useful and helpful piece of information.
</p>
</td>
</tr>
</tbody>
</table></div>
</div>
<br class="table-break"><p>
This documentation is automatically generated by Spirit QuickBook documentation
tool. QuickBook can be found in the <a href="http://spirit.sourceforge.net/repository/applications/show_contents.php" target="_top">Spirit
Repository</a>.
</p>
<a name="phoenix.preface.support"></a><h3>
<a name="id826488"></a>
<a class="link" href="index.html#phoenix.preface.support">Support</a>
</h3>
<p>
Please direct all questions to Spirit's mailing list. You can subscribe to
the <a href="https://lists.sourceforge.net/lists/listinfo/spirit-general" target="_top">Spirit
Mailing List</a>. The mailing list has a searchable archive. A search link
to this archive is provided in <a href="http://spirit.sourceforge.net" target="_top">Spirit</a>'s
home page. You may also read and post messages to the mailing list through
<a href="news://news.gmane.org/gmane.comp.spirit.general" target="_top">Spirit General
NNTP news portal</a> (thanks to <a href="http://www.gmane.org" target="_top">Gmane</a>).
The news group mirrors the mailing list. Here is a link to the archives: <a href="http://news.gmane.org/gmane.comp.parsers.spirit.general" target="_top">http://news.gmane.org/gmane.comp.parsers.spirit.general</a>.
</p>
<a name="phoenix.preface._emphasis_role__bold___emphasis____to_my_dear_daughter__phoenix__emphasis___emphasis_"></a><h3>
<a name="id826530"></a>
<a class="link" href="index.html#phoenix.preface._emphasis_role__bold___emphasis____to_my_dear_daughter__phoenix__emphasis___emphasis_"><span class="bold"><strong><span class="emphasis"><em>...To my dear daughter, Phoenix</em></span></strong></span></a>
</h3>
</div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"><p><small>Last revised: October 29, 2010 at 16:47:12 GMT</small></p></td>
<td align="right"><div class="copyright-footer"></div></td>
</tr></table>
<hr>
<div class="spirit-nav"><a accesskey="n" href="phoenix/introduction.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a></div>
</body>
</html>