【SICP归纳】4 模式匹配和以规则为基础的代换
来源:互联网 发布:网络侦探攻略 编辑:程序博客网 时间:2024/06/07 00:26
在书中符号数据一节中,作者写了关于微积分的演算规则的程序。这是一个很程序化的程序,我们所做的是在讲这些(数学)规则翻译成计算机语言。因为它有程序化的行为和结构,那么存在其他的方法使书写这个程序更加清晰吗?这些规则都具有左右两侧。左侧是我们想要采取的导数的表达式,有右边则是其的替代。
用可以匹配的模式,和能够代换的框架,可以得到新的表达式。所以这意味着模式是对源表达式的匹配,并且规则的应用的结果是去产生一个新的表达式,而这个表达式是通过实例化一个框架来传入的目标参数。这就是所谓的实例化。而整体范围上这就是由规则所描述的过程。
我们试图找出解决一类问题的解决方案而不是一个个例的解决方案。书中采用的是关于负数运算的例子。在这个例子中,作者很好的封装了实例化、结构控制等思想,并且是用各自的规则进行的单独封装。
所以尽管是一个复杂的程序,但是每个复杂的程序都是由大量的简单片段所构成。这里的递归模式倒是很复杂,但明智的一点便是不去想这件事。如果总是想着要做的事情的实际的模式,我们便会变得很困惑。也许这并不是一项很好的实践。这些模式很困难,但我们没必要去想它们。关键是有一个好的编程技巧和优良的设计,并且知道什么不用去想。
没有必要知道每一个过程都该如何去执行,或者也可以去尝试这些模式。无论如何,这已经演变为编程这一层次上的递归,不断的将问题分解。
作者举了一个字典的例子:
在扩展字典时,我不得不去用一个模式、一个基准、一本字典。这个模式就是一个模式变量。我想要去找出这个模式变量的名字并且看看它是否存在,如果不存在则添加一个新的,如果存在,那么这便是我要找的字。当然,这是建立在这是我所期待的字典时。(比如说,我要查一个汉字的意思,却去成语词典中查则成语词典不是我所期望的。)
所以如果打开任何程序,我们所要找的就是它们中的一些小块,并且这一切都很容易。至于什么叫做简化的表达式,在复合表达式中,所有的片段都是简化的,并且这些规则会应用于它们的结果。对于所有的简化表达式,仅仅是用了所有的规则——去简化它们。所以简化表达式的规范是任何表达式通过所有这些规则而被分解出的简化的片段。
感谢访问,希望对您有所帮助。 欢迎关注或收藏、评论或点赞。
为使本文得到斧正和提问,转载请注明出处:
http://blog.csdn.net/nomasp
- 【SICP归纳】4 模式匹配和以规则为基础的代换
- 【SICP归纳】1 过程和代换模型
- 图像匹配主要可分为以灰度为基础的匹配和以特征为基础的匹配
- SEM的关键词规则、匹配模式、出价
- 命令代换$()和``的区别
- 【SICP归纳】2 高阶函数和数据抽象
- 【SICP归纳】3 层次性数据和符号数据
- 第1章 Activity的生命周期和启动模式 1.3 IntentFilter的匹配规则
- 为串的模式匹配。模式匹
- Nginx的location匹配规则和全局变量
- Servlet的匹配规则和顺序
- Servlet的匹配规则和顺序
- Scala基础应用(4)- 样本类和模式匹配
- Makefile的后缀规则和模式规则
- MVC设计模式下的Dao的设计以及基础框架的搭建(以对数据库进行插入和查询为例)
- java基础_设计模式_命令模式二(以计算机读取内存和硬盘为例)
- 判断是否为邮箱,电话的匹配规则
- 以文本文件为基础的PHP搜索引擎
- 字符串处理函数(string.h)
- C++中const关键字用法详解及实例和源码下载(三)
- C++和C# WebService相互调用
- Spring源码解析——如何阅读源码
- android中Gallery的应用开发-制作自己的相片集
- 【SICP归纳】4 模式匹配和以规则为基础的代换
- 15个nosql数据库介绍和优缺点分析
- 【c语言】有一个分数序列 2/1+3/2+5/3+8/5+13/8+… 求出这个数列前20项的和
- 题目 1032 ZOJ 九度OnlineJudge
- 连接两个字符串
- SVN简介和工作原理
- Asp.net MVC ViewData学习
- 1、Windows下ThinkPHP3.1.3建立个人项目
- 定位NDK中出错的地方