Higher-order perl:transforming programs with programs

副标题:无

作   者:(美)Mark Jason Dominus著;滕家海译

分类号:

ISBN:9787111427735

微信扫一扫,移动浏览光盘

简介

《高阶Perl》是Perl全球社区公认的经典著作,是资深Perl技术专家(核心贡献者之一)数十年工作经验的结晶,Perl6设计者之一Conway亲自作序推荐。《高阶Perl》处处皆珍宝,不仅对Perl领域的各种经典问题给出了独到且精辟的解释,而且深入探讨了Perl中各种最新的主题,如递归、迭代器、过滤器、记忆术、划分、数值方法、高阶函数、currying、切断排序、基于语法的解析、惰性求值和约束编程等内容,并将这些转换成现实编程工作中强有力的实用工具:文件系统互动、HTML处理、数据库访问、网页抓取、排版、邮件处理、家庭理财、文本描图和图表生成等。全书包含大量真知灼见和最佳实践。 《高阶Perl》共9章:第1章介绍了递归与调用等参数化函数行为,分析了数制之间的转换、目录遍历、递归适用条件等;第2章讲解了代码引用的另一种用法—分配表;第3章介绍了解决性能问题的一个简单和普遍的做法—缓存;第4章讲解了迭代器的详细使用方式,包括迭代器概念、自制迭代器、迭代器实例、过滤与变换、半谓词问题、网页抓取等;第5章讲解了将通用递归函数转换到迭代器的技术;第6章介绍了如何使用无限流来摒弃迭代器的缺陷,涉及链表、递归流、正则字符串等内容;第7章介绍了把一个普通的函数转换成一个函数工厂以制造更多函数的currying技术,以及把一个函数转换成另一个函数的技术;第8章讲解了将未结构化的输入转换为数据结构的方式—解析;第9章介绍了声明式编程的技术与应用。

目录

本书赞誉
译者序
前言
第1章 递归与回调1
1.1 十进制到二进制的转换1
1.2 阶乘2
1.2.1 为什么私有变量是重要的3
1.3 汉诺塔4
1.4 层次化数据8
遍历的应用和变化11
1.6 函数式编程与面向对象式编程17
1.7 HTML17
1.7.1 更灵活的选择21
1.8 当递归膨胀时22
1.8.1 Fibonacci数22
1.8.2 划分24
第2章 分配表27
2.1 配置文件处理27
2.1.1 表驱动配置28
2.1.2 分配表的优势29
2.1.3 分配表策略32
2.1.4 默认行为34
2.2 计算器35
2.2.1 再访HTML处理38
第3章 缓存与记忆术41
3.1 缓存修正递归42
3.2 内联缓存43
3.2.1 静态变量44
3.3 好主意44
3.4 记忆术45
3.5 MEMOIZE模块45
3.5.1 作用域和有效期47
3.5.2 词法闭包49
3.5.3 再谈记忆术52
3.6 CAVEATS52
3.6.1 返回值不依赖参数的函数52
3.6.2 有边界效应的函数53
3.6.3 返回引用的函数53
3.6.4 带记忆的时钟54
3.6.5 非常快的函数54
3.7 键的生成55
3.7.1 用户提供的键生成器的更多应用58
3.7.2 内联的参数归一化的缓存管理59
3.7.3 带有引用参数的函数61
3.7.4 划分61
3.7.5 为非纯函数定制的键生成62
3.8 对象方法里的缓存62
3.8.1 对象方法的记忆术64
3.9 持续的缓存65
3.10 可供选择的记忆术66
3.11 传播福音71
3.12 速度的好处71
3.12.1 剖析和性能分析72
3.12.2 自动剖析73
3.12.3 钩子74
第4章 迭代器75
4.1 简介75
4.1.1 文件句柄是迭代器75
4.1.2 迭代器是对象76
4.1.3 迭代器的其他普通实例77
4.2 自制迭代器78
4.2.1 一个平凡的迭代器:upto()78
4.2.2 dir_walk()80
4.2.3 聪明的灵感81
4.3 实例82
4.3.1 排列83
4.3.2 基因组序列生成器88
4.3.3 文件句柄迭代器91
4.3.4 一个纯文本文件数据库91
4.3.5 反向搜索数据库97
4.3.6 随机数生成100
4.4 过滤和变换103
4.4.1 imap()103
4.4.2 igrep()105
4.4.3 list_iterator()106
4.4.4 append()106
4.5 半谓词问题107
4.5.1 避免问题108
4.5.2 可选的undef109
4.5.3 重写功能函数111
4.5.4 返回多个值的迭代器112
4.5.5 明确的耗尽函数112
4.5.6 四操作数迭代器114
4.5.7 迭代器方法116
4.6 可选的迭代器界面116
4.6.1 用foreach循环多个数组117
4.6.2 带有类each界面的迭代器120
4.6.3 系住变量界面121
4.7 一个扩展的例子:网页抓取124
4.7.1 仅追逐有趣的链接126
4.7.2 参考URL127
4.7.3 robots.txt130
4.7.4 总结132
第5章 从递归到迭代器134
5.1 再访划分问题134
5.1.1 搜寻所有可能的划分136
5.1.2 优化138
5.1.3 变化139
5.2 如何把一个递归函数转换成一个迭代器142
5.3 一个通用的搜索迭代器149
5.4 其他通用的移除递归的技术152
5.4.1 尾调用移除152
5.4.2 产生尾调用159
5.4.3 明确的栈161
第6章 无限流170
6.1 链表170
6.2 惰性链表171
6.2.1 一个平凡的流:upto()172
6.2.2 流的功能函数173
6.3 递归流175
6.3.1 使流带记忆176
6.4 HAMMING 问题179
6.5 正则字符串生成181
6.5.1 按次序生成字符串189
6.5.2 正则匹配191
6.5.3 切断排序192
6.6 NEWTON-RAPHSON方法200
6.6.1 近似流203
6.6.2 导数203
6.6.3 乌龟和兔子205
6.6.4 金融207
6.7 幂级数209
6.7.1 导数213
6.7.2 其他函数213
6.7.3 符号计算213
第7章 高阶函数与currying217
7.1 currying217
7.2 普通的高阶函数222
7.2.1 自动的currying223
7.2.2 原型225
7.2.3 更多的currying227
7.2.4 还是更多的currying228
7.3 reduce()和combine()229
7.3.1 布尔操作符232
7.4 数据库234
7.4.1 操作符重载238
第8章 解析239
8.1 词法分析器239
8.1.1 评估《》操作符240
8.1.2 更通用的词法分析器243
8.1.3 链式词法分析器245
8.1.4 偷看249
8.2 一般的解析250
8.2.1 语法250
8.2.2 解析语法254
8.3 递归下降解析器256
8.3.1 非常简单的解析器257
8.3.2 解析器操作符258
8.3.3 合成的操作符259
8.4 算术表达式261
8.4.1 一个计算器267
8.4.2 左递归267
8.4.3 star()的一个变体272
8.4.4 通用操作符解析器275
8.4.5 除错277
8.4.6 完成的计算器283
8.4.7 错误诊断和矫正285
8.4.8 大数290
8.5 解析正则290
8.6 大纲294
8.7 数据库查询解析299
8.7.1 词法分析器299
8.7.2 解析器301
8.8 回溯解析器304
8.8.1 续篇305
8.8.2 解析流308
8.9 重载310
第9章 声明式编程315
9.1 约束系统315
9.2 本地传播网络315
9.2.1 实现一个本地传播网络317
9.2.2 本地传播的问题325
9.3 线性方程326
9.4 linogram:一个绘图系统327
9.4.1 方程334
9.4.2 值343
9.4.3 特征类型354
9.4.4 解析器360
9.4.5 缺失的特征373
9.5 总结375

已确认勘误

次印刷

页码 勘误内容 提交人 修订印次

Higher-order perl:transforming programs with programs
    • 名称
    • 类型
    • 大小

    光盘服务联系方式: 020-38250260    客服QQ:4006604884

    意见反馈

    14:15

    关闭

    云图客服:

    尊敬的用户,您好!您有任何提议或者建议都可以在此提出来,我们会谦虚地接受任何意见。

    或者您是想咨询:

    用户发送的提问,这种方式就需要有位在线客服来回答用户的问题,这种 就属于对话式的,问题是这种提问是否需要用户登录才能提问

    Video Player
    ×
    Audio Player
    ×
    pdf Player
    ×
    Current View

    看过该图书的还喜欢

    some pictures

    解忧杂货店

    东野圭吾 (作者), 李盈春 (译者)

    loading icon