Boost C++ 库

...世界上最受尊敬和专家设计的 C++ 库项目之一。 Herb SutterAndrei Alexandrescu, C++ 编码标准

Next

第一章 Phoenix 3.2.0

Joel de Guzman

Dan Marsden

Thomas Heller

John Fletcher

根据 Boost 软件许可证,版本 1.0 分发。(参见随附文件 LICENSE_1_0.txt 或复制于 https://boost.ac.cn/LICENSE_1_0.txt

目录

发行说明
新增功能
Phoenix - 关于 lambda 和 let 的警告
Phoenix 3.2.0 (Boost 1.58.0)
Phoenix 3.1.1
Phoenix 3.1.0
Phoenix 3.0.6 (Boost 1.57.0)
Phoenix 3.0.5
Phoenix 3.0
简介
入门指南
引用
参数
惰性运算符
惰性语句
构造、New、Delete、转换
惰性函数
更多
基础
组织
Actor
模块
核心
引用
参数
函数
适配函数
运算符
语句
块语句
if_ 语句
if_else_ 语句
switch_ 语句
while_ 语句
do_while_ 语句
for_ 语句
try_ catch_ 语句
throw_
对象
构造
New
Delete
转换
作用域
局部变量
let
lambda
绑定
绑定函数对象
绑定函数
绑定成员函数
绑定成员变量
与 Boost.Bind 的兼容性
STL
容器
算法
元组
Phoenix 内部
Actor 详解
Phoenix 表达式
样板宏
更多关于 Action 的内容
预定义表达式和规则
自定义终端
占位符统一
高级示例
扩展 Actor
添加表达式
转换表达式树
惰性列表
背景
提供的内容
教程和示例
算术函数
列表生成
异常
实现细节
测试
下一步
维护
背景
我对维护工作方式的理解
使用中的方法
经验
维护工具
待修复的错误
编译器
总结
致谢
引用

前言

函数式编程之所以被称为函数式编程,是因为程序完全由函数组成。主程序本身被编写成一个函数,它接收程序的输入作为参数,并将其输出作为结果。通常,主函数是根据其他函数定义的,而这些函数又是根据更多的函数定义的,直到最底层的函数是语言原语。

John Hughes-- 为什么函数式编程很重要

描述

Phoenix 支持在 C++ 中进行函数式编程 (FP)。Phoenix 的设计和实现深受 Yannis Smaragdakis 和 Brian McNamara 的 FC++ 以及 Jaakko Jaarvi 和 Gary Powell 的 BLL (Boost Lambda 库) 的影响。Phoenix 融合了 FC++ 和 BLL,并使用了 Spirit 内联解析器中使用的实现技术。

Phoenix 是一个仅包含头文件的库。它的设计非常模块化。人们可以只提取和使用完整库的一小部分, буквально 将库分成小块,而不必担心这些块会失效。该库按高度独立的模块和层进行组织。

如何使用本手册

Phoenix 库按逻辑模块组织。本文档提供了库中每个模块的用户指南和参考。一个简单明了的代码示例胜过一百行文档;因此,用户指南中提供了大量的示例,并以逐步的方式进行注释和解释。用户指南基于示例:大量的示例。

每个模块的用户手册部分都尽可能避免前向信息(即引用尚未讨论的特定信息)。但是,在许多情况下,高级但相关的主题不可避免地会穿插在正常的讨论流程中。为了缓解这个问题,归类为“高级”的主题在初读时可以跳过。

一些图标用于标记某些主题,指示其相关性。这些图标位于某些文本之前,表示

表 1.1 图标

图标

名称

含义

注意

提供的信息是辅助性的,但将使读者对特定主题有更深入的了解。可以跳过。

警告

提供的信息至关重要。

提示

可能有用的信息。


除非另有说明,否则假定 using namespace boost::phoenix;

...献给 Joel 亲爱的女儿,Phoenix


Next