70 lines
3.2 KiB
Plaintext
70 lines
3.2 KiB
Plaintext
[/==============================================================================
|
|
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]
|