| Home | Libraries | People | FAQ | More

## Chapter 1. Phoenix 2.0

### Joel de Guzman

### Dan Marsden

Copyright © 2002-2005 Joel de Guzman, Dan Marsden

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)

## 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

## Description

Phoenix enables Functional Programming (FP) in C++. The design and implementation of Phoenix is highly influenced by FC++ 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 version 2, this version, will probably be the last release of the library. Phoenix v2 will be the basis of the Phoenix and BLL merger.

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.

## 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 not 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 1.1. Icons

Icon | Name | Meaning
--- | --- | ---
| Note | Information provided is auxiliary but will give the reader a deeper insight into a specific topic. May be skipped.
| Alert | Information provided is of utmost importance.
| Tip | A potentially useful and helpful piece of information.

This documentation is automatically generated by Spirit QuickBook documentation tool. QuickBook can be found in the Spirit Repository.

## Support

Please direct all questions to Spirit's mailing list. You can subscribe to the Spirit Mailing List. The mailing list has a searchable archive. A search link to this archive is provided in Spirit's home page. You may also read and post messages to the mailing list through Spirit General NNTP news portal (thanks to Gmane). The news group mirrors the mailing list. Here is a link to the archives: http://news.gmane.org/gmane.comp.parsers.spirit.general.

## ...To my dear daughter, Phoenix

Last revised: July 23, 2008 at 17:24:10 GMT |