脑力练习第二季_The Seasoned Schemer书评-查字典图书网
查字典图书网
当前位置: 查字典 > 图书网 > 编程 > The Seasoned Schemer > 脑力练习第二季
onixie The Seasoned Schemer 的书评 发表时间:2012-05-14 13:05:54

脑力练习第二季

    本书依旧沿袭TLS问答的风格,但与TLS中那种“导师在旁对你谆谆教诲”的感觉相比,本书更像是自言自语式的醒悟过程。

    如果说TLS努力把Scheme、递归和函数式编程这些概念的外形轮廓印刻在读者的脑海中的话,本书则主要涉及对轮廓的优化。

    本书的前半部分引入了从TLS初始就存在的问题(冗余),并通过三种新引入的结构解决这一问题:

1. 为了隐藏掉多余的函数参数、不必要的函数定义(优化抽象中的冗余),letrec被引入。letrec借助词法闭包以及对递归的支持,帮助函数定义内部的抽象子块(内部函数),使得函数的外轮廓更加清晰简单。

2. 为了省略冗余的运算过程(计算冗余),letcc被引入。和TLS中对于CPS(continuation passing style)的简要讨论一样,本书省略了对于FCC(first class continuation)概念的深入讨论。转而从实用角度介绍FCC,演示了通过FCC对goto,try/catch等高级的控制结构的实现。

3. 为了省略对冗余的相同表达式的计算(即是计算冗余又是抽象冗余),let被引入。通过let,如同通过letrec,可以定义函数内部的值抽象(内部变量)来使得函数的内部轮廓更加清晰简单。

    之后,作者继续将优化和冗余作为本书的隐含线索,引入了副作用这个概念。

     副作用是程序设计世界中老生常谈的问题。一般认为副作用是一个危险的概念。因为它会带来的许多问题,甚至这些问题可以上升到哲学层面。本书中,作者通过实例展现给读者的是副作用的善良面。在函数式中引入可控制的副作用是的可以使得诸如程序优化(cache)、调试(性能计数)等诸多方面变得简单。

最后的最后,本书回到FCC,稍微比较了副作用和FCC之间在某些应用中的相似点(但没有引出composite continuation)。然后回到在TLS最后讨论的有关解释器的相关问题(从函数式的角度)结束本书。

展开全文


推荐文章

猜你喜欢

附近的人在看

推荐阅读

拓展阅读

对“脑力练习第二季”的回应

智障 2012-07-24 00:15:14

学了sicp,觉得读它是浪费时间。