c++函数式编程 编程语言 (塞尔)伊凡·库奇(ivan cukic) 新华正版
¥
58.9
5.9折
¥
99
全新
库存4件
作者(塞尔)伊凡·库奇(ivan cukic)
出版社机械工业出版社
ISBN9787111641988
出版时间2020-01
版次1
装帧平装
开本16
页数262页
字数427千字
定价99元
货号xhwx_1202000500
上书时间2024-09-29
商品详情
- 品相描述:全新
-
正版特价新书
- 商品描述
-
主编:
c函数式编程不是一本教授c编程的书,是讲解如何将函数式编程适用于c。c函数式编程线编排,每一章的内容都建立在前一章的基础上,循序渐进。c函数式编程通过丰富的案例和图解,详细阐述了c面向函数式编程,每个小知识点跟随实战练,讲解透彻,且费提供所有源码。
目录:
译者序
致谢
前言
关于本书
关于作者
章函数式编程简介
1.1什么是函数式编程?
1.1.1与面向对象编程的关系
1.1.2命令式与声明式编程的比较
1.2纯函数(pure functions)
1.2.1避可变
1.3以函数方式思问题
1.4函数式编程的优点
1.4.1代码简洁易读
1.4.2并发和同步
1.4.3持续优化
1.5c++作为函数式编程语言的进化
1.6将会学到什么
结
第2章函数式编程之旅
2.1函数使用函数?
2.2stl实例
2.2.1求均值
2.2.2折叠(fol)
2.2.3删除字符串空白符
2.2.4基于谓词分割集合
2.2.5过滤(filtering)和转换(transforming)
2.3stl算法的可组合
2.4编写自己的高阶函数
2.4.1接收函数作为参数
2.4.2用循环实现
2.4.3递归(recursion)和尾调用优化(tail-call optimization)
2.4.4使用折叠实现
结
第3章函数对象
3.1函数和函数对象
3.1.1自动推断返回值类型
3.1.2函数指针
3.1.3调用作符重载
3.1.4创建通用函数对象
3.2lambda和闭包(closure)
3.2.1lambda语法
3.2.2lambda详解
3.2.3在lambda中创建任意成员变量
3.2.4通用lambda表达式
3.3编写比lambda更简洁的函数对象
3.3.1stl中的作符函数对象
3.3.2其他库中的作符函数对象
3.4用std::function包装函数对象
结
第4章以旧函数创建新函数
4.1偏函数应用
4.1.1把二元函数转换成一元函数的通用方法
4.1.2使用std::bind绑定值到特定的函数参数
4.1.3二元函数参数的反转
4.1.4对多参数函数使用std::bind
4.1.5使用lambda替代std::bind
4.2柯里化(currying):看待函数不同的方式
4.2.1创建柯里化函数的简单方法
4.2.2数据库访问柯里化
4.2.3柯里化与偏函数应用
4.3函数组合
4.4函数提升(复)
4.4.1键值对列表反转
结
第5章纯洁:避可变
5.1可变带来的问题
5.2纯函数和引用透明
5.3无副作用编程
5.4并发环境中的可变与不可变
5.5const的重要
5.5.1逻辑const与const
5.5.2对于临时值优化成员函数
5.5.3const的缺陷
结
第6章惰求值
6.1c++的惰
6.2惰作为一种优化技术
6.2.1集合惰排序
6.2.2用户接中的列表视图
6.2.3通过缓存函数结果修剪递归树
6.2.4动态编程作为惰形式
6.3通用记忆化(generalized memoization)
6.4表达式模板与惰字符串拼接
6.4.1纯洁与表达式模板
结
第7章range
7.1range简介
7.2创建数据的只读视图
7.2.1range的filter函数
7.2.2range的transform函数
7.2.3range惰求值
7.3修改range中的值
7.4定界rang和无限range
7.4.1用定界range优化用于输入的range
7.4.2用哨兵创建无限range
7.5用range统计词频
结
第8章函数式数据结构
8.1不可变链表(immutable linked lists)
8.1.1在表头添加和删除元素
8.1.2在链表末尾添加和删除元素
8.1.3在链表中间添加和删除元素
8.1.4内存管理
8.2不可变类向量结构
8.2.1位图向量树中的元素查找
8.2.2向位图向量树追加元素
8.2.3位图向量树的修改
8.2.4在位图向量树的末尾删除元素
8.2.5其他作和位图向量树的整体效率
结
第9章代数数据类型及模式匹配
9.1代数数据类型
9.1.1通过继承实现和类型
9.1.2通过union和std::variant实现和类型
9.1.3特定的实现
9.1.4特殊的和类型:optional
9.1.5和类型用于错误处理
9.2使用代数数据类型进行域建模
9.2.1原始的方法及其缺点
9.2.2更复杂的方法:自上而下的设计
9.3使用模式匹配更好地处理代数数据类型
9.4mach7的强大匹配功能
结
0章monad
10.1仿函数并不是以前的仿函数
10.1.1处理可选值
10.2monad:更强大的仿函数
10.3基本的例子
10.4range与monad的嵌套使用
10.5错误处理
10.5.1std::optional作为monad
10.5.2expected作为monad
10.5.3trymonad
10.6monad处理
10.7并发和延续monad
10.7.1future作为monad
10.7.2future的实现
10.8monad组合
结
1章模板元编程
11.1编译时作类型
11.1.1推断类型调试
11.1.2编译时的模式匹配
11.1.3提供类型的元信息
11.2编译时检查类型的属
11.3构造科里化函数
11.3.1调用所有可调用的
11.4dsl构建块
结
2章并发系统的函数式设计
12.1actor模型:组件思想
12.2创建简单的消息源
12.3将反应流建模为monad
12.3.1创建宿(sink)接收消息
12.3.2转换反应流
12.3.3创建给定值的流
12.3.4连接流
12.4过滤反应流
12.5反应流的错误处理
12.6响应客户端
12.7创建可修改的actor
12.8用actor编写分布式系统
结
3章测试与调试
13.1程序编译正确吗?
13.2单元测试与纯函数
13.3自动产生测试
13.3.1产生测试用例
13.3.2基于规则的测试
13.3.3比较测试
13.4测试基于monad的并发系统
结
内容简介:
c函数式编程介绍了c的面向函数式编程。面向函数式编程是继面向对象编程之后又一编程范式,解决了命令式(过程式)编程与面向对象编程中出现的问题,是一种极具潜力的编程方式,值得研究学。主要讲解了函数对象、纯洁(purity)、惰求值、range、函数式数据结构、代数类型及模式匹配、monad、模板元编程、并发的函数式设计,以及测试与调试等有关内容,还介绍了使用原有函数创建新函数的知识。
c函数式编程不仅可以作为c程序员、编程爱好者以及软件工程师学函数式编程的参书,还可以作为高等院校c编程语言的教材。
作者简介:
ivan 268;uki263; 在贝尔格莱德数学系教授现代c技术和函数式编程。他从1998 年开始使用c。在以前和攻读博士时研究函数式编程,他应用函数式编程技术编写了全球数亿人使用的真实项目。ivan是kde 的核心开发人员,kde 是大的开源c项目。
精彩内容:
编程是一门罕见的学科,通过它可以从无到有地创建一些东西。编程可以根据自己的意志创建想要的东西,需要的是一台电脑。我在上学的时候,大部分的编程课集中于命令式编程——首先是面向过程的c 语言,然后是面向对象编程的c和java。在我的大学里情况也没有太大的改变——主要的编程思想还是面向对象的编程(oop)。在这段时间,几乎使我认为所有的语言在概念上都是相同的——只不过语法不同,在学了某种语言的基础之后,如循环和分支,通过很小的调整可以编写其他程序。次接触函数式编程语言是在大学中,在课堂上学了lip 语言。我的直觉反应是使用lip 来模拟ifthenele 语句和for 循环,这样可以真正使它变得有用。不是使我的认识适合语言,却决定使语言适合我的想法,以便用c 的方式编程。我只想说那时候,没有看到函数式编程的任何意义——lip 可以做的,用c 语言可以实现,而且更加简单。经过相当长的时间我才开始研究函数式编程。这么做的根本原因是,在某些项目中使用的语言发展太慢了。语言中添加了foreach 循环,像什么了不起的东西:只需要下载新的编译器,可以使编程生涯更轻松了。这让我陷入深思。为了得到诸如foreach 循环的新语言结构,必须等待语言的新版本和新的编译器。但在lip 中,却可以使用一个简单的函数实现for 循环相同的功能,根本不需要升级编译器。这正是我学函数式编程的原因:无须改变编译器可以扩展编程语言的能力。编程思想仍然是“面向对象”的,但却学着用函数式风格的结构简化面向对象代码的工作。我开始投入大量的时间研究函数式编程语言,如hakell、cala 和erlang。我惊奇地发现,使面向对象程序员头痛不已的问题,换个角度——以函数式风格思——迎刃而解了。我的工作主要使用c,所以必须寻找一种方式用c进行函数式编程。事实证明,这样的人并非只有我一个,世界上到处都是具有类似想法的人。很荣幸在各大会议上遇到他们。这是交流思想、学新的东西、交流c函数式编程经验的机会。大多数这样的会议结束的时候都有一个共同的结论:如果有人写一本c函数式编程的书,那太棒了。但问题是,所有人都让别人来写,因为我们都需要从实际项目中寻找思想的源泉。当manning 出版社找到我写这本书时,我起初是犹豫的——我宁愿读这样的一本书,而不愿意去写。但我意识到,如果每个人都是这样的想法,将不会有c函数式编程的书了。我决定接受邀请,并开始了著书的旅程,于是有了你看到的这本书。
— 没有更多了 —
以下为对购买帮助不大的评价