Scheme 48

Scheme 48Scheme编程语言的一种方言,遵循了R5RS标准[1],这个实现使用了发送字节码解释器[2]。它有一个外界函数接口用于调用来C语言的函数[3],并带有一个正则表达式(regex)[4],和一个到可移植操作系统接口(POSIX)的接口[5]。它支持可移植Scheme库SLIB,并且是Scheme shell Scsh的基础[2]。它已经被用于学术研究之中[6]。它是在BSD许可证下发行的自由及开放源代码软件

Scheme 48
多范型: 函数式, 过程式, 元编程
语言家族Lisp/Scheme
設計者Richard Kelsey, Jonathan Rees
實作者Richard Kelsey, Jonathan Rees
1987年3月1987-03
当前版本
  • 1.9.2 (2014年4月)
型態系統动态, 强类型, 潜在
作用域词法
操作系统跨平台
許可證BSD
網站s48.org

叫做“Scheme 48”是因为它的第一版是在1986年8月用48小时写成的[7]

实现

Scheme 48使用了一个虚拟机来解释字节码,它是用叫做PreScheme的一个Scheme的受限方言写成的,这个方言可以被转换成C并编译成本机二进制代码。PreScheme或写为Pre-Scheme,是静态类型的Scheme方言,具有C的高效性和低层机器访问,却保持了多数想要的Scheme特征[8]

Pre-scheme是非常有价值的。我确信Kelsey曾发表了一篇关于它的论文。它在可以被装载入Scheme系统并运行代码的意义上是Scheme。但是它是有限制的 – 它要求你以允许完全的Hindley-Milner静态类型推论的风格来书写程序,而所有高阶过程都在编译时间被beta-代换了,这意味你可以*直接*将Prescheme程序转写“自然的”C代码而具有C水平的效率。这就是说,你可以将Prescheme看作对用于低层代码的C的真实舒适替代者。并且在拨转开关而转换到C代码之前,你可以在你选择的交互式Scheme开发环境中调试你的Prescheme程序,因为Prescheme就是受限的Scheme。Scheme 48字节码解释器是用Prescheme书写的。Prescheme差不多消亡了 – 除了他写的那篇学术论文,Kelsey从未有时间书写它的文档并将它变成其他人可以使用的独立工具(Ian Horswill在西北大学的小组是这个论断的一个例外 – 他们已经将Prescheme用于了有价值的工作。)

——Olin Shivers,"Olin Shivers: History of T"[9]

引用

  1. R5RS claim 页面存档备份,存于
  2. Kelsey, Richard; Rees, Jonathan. . S48.org. [2018-12-05]. (原始内容存档于2022-04-21).
  3. Kelsey, Richard; Rees, Jonathan; Sperber, Mike. . S48.org. 10 January 2008 [2018-12-05]. (原始内容存档于2021-11-06)., Chapter 8 in manual for version 1.8.
  4. Kelsey, Richard; Rees, Jonathan; Sperber, Mike. . S48.org. 10 January 2008 [2018-12-05]. (原始内容存档于2021-11-04)., Chapter 5 in manual for version 1.8.
  5. Kelsey, Richard; Rees, Jonathan; Sperber, Mike. . S48.org. 10 January 2008 [2018-12-05]. (原始内容存档于2021-11-06)., Chapter 9 in manual for version 1.8.
  6. Final shift for call/cc: direct implementation of shift and reset
  7. Rees, Jonathan A. . Jonathan A. Rees. Mumble.net. [2018-12-05]. (原始内容存档于2021-05-24).
  8. Richard Kelsey. . 1997 [2021-11-04]. (原始内容存档于2009-08-14).
  9. Shivers, Olin. . PaulGraham.com. [2018-12-05]. (原始内容存档于2022-10-05).

外部链接

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.