- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Scheme 语言极其实现
Scheme 语言极其实现来自 : 木头书
种小巧而强大的语言2012-09-01 15:19:231 scheme
种小巧而强大的语言
scheme 是一种简洁、小巧而又强大的语言,是一种通用编
程语言,种脚本语言,一种可以嵌入到其他程序中的拓展
程语言,
种脚本语言,一种可以嵌入到其他程序中的拓展
4五吉笙笙
语言等等。
scheme 被设计成支持多种实现策略,而且已经有大量的实 现已经完成,它们中的大多数都是自由软件。有的是解释器
如 Java )。实现(例如 BASIC 与 Tcl
如 Java )。
和 Pascal ),以及编译为虚拟机字节码的编译器
已经存在的有多种 Scheme 语言的拓展实现,包括我们的
RSchem 系统,它是
RSchem 系统,它是
种集成有一个对象系统并可拓展可移
植的 Scheme 实现。
本书是三本计划中的Scheme 文档中的第一部分, Scheme实现以及 RScheme语言与其实现。在全部完成后我也许会将它们集中到一部大书中。三本都会为
本书是三本计划中的
Scheme 文档中的第一部分, Scheme
实现以及 RScheme
语言与其实现。在全部完成后我也许会
将它们集中到一部大书中。三本都会为
Texinfo 格式,以支
持打印为可硬拷贝的文档,支持可在线浏览的
Info 文档 (通
过 Info 浏览器或 Emacs 编辑器的 Info 系统 ) ,或自动转为
HTML 格式文件以便于使用 Web 浏览器浏览。无论你通过 何种方式阅读到本书,都欢迎来到 Scheme 的世界。 2. 本书 面向的读者 本书针对的群体是那些对 Scheme 的工作机理, Scheme 语 言的设计以及 Scheme 语言的使用感兴趣的人。
以上三条并不矛盾,因为学习编程语言最好的方式之 同时也是语言设计的重要原则——就是研究 Scheme 语言是 如何用其自身实现的。 我将通过实现若干 Scheme 语言子集 的解释器和一个简单的编译器来展示 Scheme 语言的强大之 处。 Scheme 语言编译器的简洁与明晰将令人惊叹。
这是一种由 Abelson and Sussman 在《计算机程序的构造 与解释》一书中发起的并广泛应用与编程介绍书籍的传统途 径。许多介绍 Scheme 编程语言的书籍都遵循了这一途径, 而它们中的大多数又是为初学者提供的。虽然我本人认为
Scheme 是一种适宜于初学的优秀语言,但对于那些已经用
C 和 PASSICAL 语言工作的人来说, 仅仅为了学习 Scheme
去阅读编程介绍类的书实在有些强人所难。
本书与当前大多数介绍 Scheme 语言的书在许多方面有所不 同。
我会将基本的编程概念一带而过,例如什么是变量,什么是 递归。
我将会比绝大多数 Scheme 书籍的作者介绍得更加具体, 因 为看起来这样学生们能更容易理解。我会深入到语言层面告 诉你大多数 Scheme 语言的实现是如何工作的。 我发现这样 的具体说明能够帮助我的学生以及我自己解开心中的许多 困惑。
我不会从函数式编程的角度开始让你以为 Scheme 是通过表 达式重写来执行的。
我将把 Scheme 描述为一种“弱面向对象”语言的特例。我所 指的弱面向对象语言并不是那种有着继承关系等的面向对 象概念,尽管很多 Scheme 的拓展实现了这一点。我的意思 仅仅是这种语言中的值都属于某种数据对象,那意味着你能 够比较两个指向对象的指针来看他们是否属于不同种类的 对象,而不是同一种对象的不同状态——同一种对象也许会 有许多种可变的状态。
许多人也许不太喜欢我的讲授方式,因为我过早开始关于状
态与赋值的讨论。 在 Scheme 语言中普遍认为没有限制地使
用赋值操作是种糟糕的编程风格。好的编程风格是去写几
用赋值操作是
种糟糕的编程风格。好的编程风格是去写几
乎“纯函数式”或
乎“纯函数式”
或applicative的程序。尽管我同意“纯函数式”
对于 Scheme来说通常是一件好事, 我的想法是尽可能早地明确
对于 Scheme
来说通常是一件好事, 我的想法是尽可能早地
明确 Scheme
的语法以让新的 Scheme 程序员们清楚
Scheme 是一种非常通用的编程语言,尽管它非同寻常的简 洁与表达能力。我的经验告诉我许多人获益于对早期对赋值 操作的领会,它澄清了变量与变量绑定的基础。风格的事儿 咱们等到各种选择性都比较清楚的时候再讨论。
如果你曾经学习过 Lisp 或 Scheme ,但又不够深入, 那么这 本书正是你想要的。很多人接触 Lisp 或 Scheme 就像鸭子 接触到水一样,但也有些人不是。但我认为那是由学习材料 呈现的方式不同导致的,其实
文档评论(0)