Boost C++ 库

...世界上最受推崇和专业设计的 C++ 库项目之一。 Herb SutterAndrei Alexandrescu,《C++ 编码标准

Next

第 1 章。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、Casts
惰性函数
更多
基础知识
组织结构
Actor
模块
核心
引用
参数
Nothing
Function
适配函数
Operator
Statement
Block Statement
if_ Statement
if_else_ Statement
switch_ Statement
while_ Statement
do_while_ Statement
for_ Statement
try_ catch_ Statement
throw_
Object
构造
New
Delete
Casts
Scope
局部变量
let
lambda
Bind
绑定函数对象
绑定函数
绑定成员函数
绑定成员变量
与 Boost.Bind 的兼容性
STL
容器
算法
元组
Phoenix 内部
Actor 详解
Phoenix 表达式
样板宏
关于 Actions 的更多信息
预定义表达式和规则
自定义终端
占位符统一
高级示例
扩展 Actor
添加表达式
转换表达式树
惰性列表
背景
提供了什么
带有示例的教程
算术函数
列表生成
异常
实现细节
测试
下一步去哪里?
维护
背景
我对维护工作原理的理解
使用中的方法
经验
维护工具
要修复的错误
编译器
总结
致谢
引用

序言

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

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

描述

Phoenix 在 C++ 中实现了函数式编程 (FP)。Phoenix 的设计和实现深受 Yannis Smaragdakis 和 Brian McNamara 的 FC++ 以及 Jaakko Jaarvi 和 Gary Powell 的 BLL (Boost Lambda Library) 的高度影响。Phoenix 是 FC++ 和 BLL 的混合体,使用了 Spirit 内联解析器中使用的实现技术。

Phoenix 是一个仅包含头文件的库。它的设计非常模块化。人们可以提取并仅使用完整库的一小部分,真正将库分解成小块,而不用担心这些小块将无法再工作。该库以高度独立的模块和层组织。

如何使用本手册

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

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

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

表 1.1. 图标

图标

名称

含义

注意

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

警告

提供的信息至关重要。

提示

潜在的有用和有帮助的信息。


除非另有说明,否则假定使用了代码 using namespace boost::phoenix;

...献给 Joel 的爱女 Phoenix


Next