MIT/GNU Scheme 参考手册 (2021-10-21(2),每天一页,认真学习,加油!)

Ch1 概述

        本手册详细描述了 MIT/GNU Scheme 运行时系统。它旨在成为程序员的参考文档。它不描述如何运行 Scheme 或如何与它交互,这部分内容在 《 MIT/GNU Scheme User's Manual》中。

        本章总结 Scheme 的语义,简要描述 MIT/GNU Scheme编程环境,解释该语言的语法和词汇约定。随后的章节描述特殊形式、大量数据抽象以及输入和输出设备。

        在本手册中,我们将经常提到 “标准 Scheme” 。“标准 Scheme” 是 William Clinger,Jonathan Rees 等人修订的 《Report on the Algorithmic Language Scheme ( Revised 4)》或由IEEE 标准1178-1990 《 IEEE Standard for the Scheme Programming Language》中定义的语言(事实上,本手册中的几个部分都是从修订报告中复制过来的)。MIT/GNU Scheme 是标准 Scheme 的扩充。

        以下是 Scheme 语言的几个显著语义特征:

(1) 变量是静态的

        Scheme 是静态程序语言,这意味着变量的每一次使用与该变量的词汇表现绑定相关联。(这里翻译的感觉不对,请大家帮忙)Algol 是另外一个静态语言。

(2) 类型是隐藏的

        与显示类型相不同,Scheme 是隐藏类型。这意味着在 Scheme 中,类型与值(或对象)相关联,而不是与变量相关联。其他隐藏类型的语言(也称为弱类型或动态类型语言)包括 APL,Snobol 和 Lisp的其他方言。显示类型的语言(有时也称为强类型或静态类型语言)包括 Algol 60, Pascal 和 C。

(3) 对象具有无限范围

        在 Scheme 计算期间,创建的所有对象(包括过程和延续)具有无限范围,且任何 Scheme对象都不会被破坏。系统不会耗尽内存,因为当未来的计算可能不会需要某些对象时,垃圾收集器会回收对象占用的存储。其他一些具备大多数对象具有无限范围特性的语言有 APL 和其他 Lisp 方言。

(4) 真尾递归

        Scheme 是真正意义上的尾递归,这意味虽然迭代计算从语法上是由递归过程描述的,但它可以在常数空间中发生。通过尾递归操作,您可以使用普通过程 -------- 调用机制来表示迭代;特殊的迭代表述只是为了语法上的方便。

(5) 过程是对象

        Scheme 过程是对象,这意味着你能动态的创建他们,把他们存储在数据结构里,把他们作为其他过程的结果进行返回,等等。其他拥有类似过程对象的语言有 Common Lisp、ML。

(6) continuations 是显示的( continuations 怎么翻译更贴切,需要大家帮助

        在大多数其他语言中,continuations 在后台工作。在 Scheme 中,continuations 是对象。你可以通过使用 continuations 来实现各种高级控制结构,包括非本地出口,回溯和协同路由。

(7) 参数是按值传递的

        Scheme 过程的参数是按值传递的,这意味着 Scheme 过程在获得控制权之前会计算参数表达式,无论过程是否需要这个计算结果。ML,C 和 APL 是另外三个值传递的语言。SASL 和 Algol 60 语言与此不同,除非过程需要那些值,否则参数表达式不会被计算。

        Scheme 使用波兰括号列表符号描述程序和(其他)数据。Scheme 的语法像大多数 Lisp 方言一样,在很大程度上因为其简单性而提供了强大的表达能力。(以下这句话翻译的是否合适?)这种简单性的一个重要结果是 Scheme 程序和数据易受其他 Scheme 程序的同意处理。与其他 Lisp 方言一样, read 原语解析其输入;也就是说,它对所读内容执行语法和此法的分解。

        

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值