Scheme 简介

lambda.png

前言

Scheme 是一门通用的高级计算机程序语言。它被运用于开发文本编辑器、编译器优化、操做系统,图形库,表格应用程序,AI/VR 等等。html

它是著名 Lisp 语言的一种方言,语法结构上,跟 Lisp 很像,但与 Lisp 的主要区别是它采用了词法做用域(Lexical Scoping),而非动态做用域(Dynamic Scoping) 。git

不少人对 Lisp 的认识可能来自于《黑客与画家》,看这篇文章的读者,想必对 Scheme 有些兴趣,若是不了解 Lisp 有多强,能够读一读这本书的第 12 章,看看做者对 Lisp 的「吹捧」。github

Scheme 诞生于 1975 年,是世面上主流编程语言的鼻祖,虽然在编程语言排行榜上,它排名比较落后,但现现在不少高级语言都有它的身影,或者说朝着它靠拢,好比 Python、JavaScript 等。shell

特色

Scheme 程序具备可移植性,只需在要装有 Scheme 解析器的机器就可以运行。编程

Scheme 是一门多范式的语言。它的函数是一等公民(first-class),因此能够做为一门函数式的语言使用。同时它也支持命令式。vim

从语法结构上看上,Scheme 程序由大量的括号组成,看上去像数学公式,与常见的编程语言区别很大。但其实只要掌握了最基本的语法规则,Scheme 程序很是容易看懂,而且由于语法比较单一,也比较容易上手。编程语言

最新的 Scheme 的语言标准为 R6RS:www.r6rs.org编辑器

解析器

Scheme 存在多种解析器,这些解析器在语法支持上存在细微的差别,但大多数功能都是相同的。若是使用其中某个解释器时,遇到 procedure 找不到,多是这种解析器不支持的过程。ide

这里主要介绍三种解析器。函数

MIT/GNU Scheme

MIT/GNU Scheme 提供 Scheme 程序的解释器和编译器,此外它还支持源码调试,集成类 Emacs 编辑器,以及大量的运行库。 详细的解释能够参考文档

命令行安装方式为:

brew install mit-scheme
复制代码

安装成功后使用 mit-scheme 命令可进入交互模式。

Ctrl-C 会引导展现帮助界面,Ctrl-D 退出交互。

Racket

Racket 是基于 R5RS 实现的,并在该基础上新增了一些实现,严格来说它与新版 R6RS 不兼容。虽然它仍然可以运行 R6RS 标准的 Scheme,但在遇到不能解析的过程时,会出现运行时错误。

所以它也自称是一门新的语言:Racket。

详细介绍能够参考文档:racket-lang.org/

Racket 的安装过程很是慢,会关联一系列的工具。安装好后是一个 Application,须要手动配置 racket 环境命令,才能在终端使用。

Chez Scheme

Chez Scheme 是最快的 Scheme 解析器,安装速度也很是快。

执行以下命令安装:

git clone https://github.com/cisco/ChezScheme
cd ChezScheme
./configure
make
sudo make install
复制代码

Scheme 的交互体验也很不错,建议阅读 Chez Scheme User Guide 第二章前面部分,十分钟左右就能了解基本的使用方法。

后记

笔者试用过这几个,最后选择了 Chez Scheme,它惟一的缺点是使用 scheme file.ss 命令执行结束后,会进入交互状态,若是不但愿这样,能够在 file.ss 文件的末尾加如下两行代码:

(newline)
(exit)
复制代码

配合使用 vim + tmux,一侧展现代码,一侧显示输出结果,体验仍是挺不懂错的:)

如下是王垠提到 Scheme 的相关文章,请参考阅读:

程序语言和它们的工具

Scheme 编程环境的设置

Chez Scheme 的传说

List 已死, Lisp 万岁!

相关文章
相关标签/搜索