Next: , Up: Introduction   [Contents][Index]


1.1 Guile 与 Sheme

Guile 依据 Algorithmic Language Scheme 中的 Revised^5 报告(亦称作 R5RS)实现 Scheme。Guile 超越了 R5RS中提供的简陋语言,并扩展了模块系统、POSIX 系统调用完全访问、网络支持、多线程、动态链接、外部函数调用接口、强大的字符处理、和现实中编程所需的其它功能。

2007 年,Scheme 社区同意发布 R6RS。它是 RnRS 系列的重要部分。R6RS 扩展了核心 R6RS,并为许多以不同方式(包括 Guile)实现的非核心功能制定了标准。时过境迁,Guile 更新出了 R6RS 几乎所有功能,并调教了现有功能功能来符合R6RS 规范。参看 R6RS Support 获取完整信息。

SRFI 与官方一同标准化了许多有关实际需求(例如:多线程、多维数组)的接口。Guile 支持许多 SRFI 规范(参看 SRFI Support)。

R6RS 的标准化使 Scheme 社区发生了分歧。R6RS 的实现专注于 R5RS 的不完善(在 R5RS 几乎不能写出可移植的有用的程序)。所以,只有一个充满野心的规范才能解决这一问题。但,Scheme 中一部分人认为 R6RS 的工作太过宽泛,它包括了不会被再细化的简单的 Scheme 组件。其中的后者成功控制了 Scheme的官方标准化,并在 2013 年发布了功能有限的 R7RS(主要由 R5RS 和模块系统组成)。同样的,Guile 也支持 R7RS(参看 R7RS Support)。

随着 R6RS 和 R7RS,统一 Scheme 标准化开始多多少少有些顺其自然3。关于这两个系统和 SRFI 定义的模块,继续将有更多的代码编写,并且 Guile 都会支持它们。但,为了将来发展,Guile 从其它语言社区汲取灵感(如:Racket、Clojure、Concurrent ML 等)。

在夏天,Guile支持编写和运行R5RS,R6Rs和R7RS计划标准的代码,它也支持一些SRFI模块。然而对于大多数用户来说,直到一个可移植性交叉实施的需求被确认,我们推荐使用Guile对于解决手头问题、不管是否从属于标准或者属于Guile-specific的部分。4


Footnotes

(3)

原文为 have more or less run its course

(4)

感谢 SpringHan 翻译的这一段