Scheme 48

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

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

叫做“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英语T (programming language)"[9]

引用

  1. ^ R5RS claim (页面存档备份,存于互联网档案馆
  2. ^ 2.0 2.1 Kelsey, Richard; Rees, Jonathan. Scheme 48. S48.org. [2018-12-05]. (原始内容存档于2022-04-21). 
  3. ^ Kelsey, Richard; Rees, Jonathan; Sperber, Mike. The Incomplete Scheme 48 Reference Manual for release 1.8: Mixing Scheme 48 and C. 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. The Incomplete Scheme 48 Reference Manual for release 1.8: Regular Expressions. 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. The Incomplete Scheme 48 Reference Manual for release 1.8: Access to POSIX. 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. JAR's Scheme 48 Page. Jonathan A. Rees. Mumble.net. [2018-12-05]. (原始内容存档于2021-05-24). 
  8. ^ Richard Kelsey. Pre-Scheme: A Scheme Dialect for Systems Programming. 1997 [2021-11-04]. (原始内容存档于2009-08-14). 
  9. ^ Shivers, Olin. Olin Shivers: History of T. PaulGraham.com. [2018-12-05]. (原始内容存档于2022-10-05). 

外部链接

  • 官方网站
特征
 
对象系统
  • Common Lisp对象系统(CLOS)
  • CommonLoops英语CommonLoops
  • Flavors英语Flavors (programming language)
实现英语Programming language implementation
Common
Lisp
  • Allegro Common Lisp英语Allegro Common Lisp
  • Armed Bear Common Lisp英语Armed Bear Common Lisp(ABCL)
  • CLISP
  • Clozure CL
  • CMU Common Lisp(CMUCL)
  • Corman Common Lisp英语Corman Common Lisp
  • Embeddable Common Lisp(ECL)
  • GNU Common Lisp(GCL)
  • LispWorks英语LispWorks
  • Macintosh Common Lisp英语Macintosh Common Lisp
  • Mocl英语Mocl
  • Poplog英语Poplog
  • Steel Bank Common Lisp(SBCL)
  • Symbolics Common Lisp英语Genera (operating system)
  • Bigloo英语Bigloo
  • Chez Scheme
  • Chicken
  • Gambit
  • Gauche英语Gauche (Scheme implementation)
  • GNU Guile
  • Ikarus英语Ikarus (Scheme implementation)
  • IronScheme英语IronScheme
  • JScheme
  • Kawa英语Kawa (Scheme implementation)
  • Larceny
  • MIT/GNU Scheme
  • Racket
  • RScheme英语RScheme
  • Scheme 48
  • SCM
  • SIOD
  • STklos英语STklos
  • TinyScheme
  • Ypsilon英语Ypsilon (Scheme implementation)
  • OpenLisp英语OpenLisp
  • Easy-ISLisp
未标准化
 
  • Arc
  • AutoLISP
  • BBN LISP
  • Clojure
  • Dylan
  • Emacs Lisp
  • EuLisp英语EuLisp
  • Franz Lisp
  • GOAL英语Game Oriented Assembly Lisp
  • Hy
  • Interlisp英语Interlisp
  • 知识工程环境英语Knowledge Engineering Environment
  • LispKit
  • *Lisp英语*Lisp
  • Le Lisp
  • LFE英语LFE (programming language)
  • Lisp Machine Lisp英语Lisp Machine Lisp
  • Maclisp
  • MDL英语MDL (programming language)
  • MLisp英语MLisp
  • MultiLisp英语MultiLisp
  • newLISP
  • NIL英语NIL (programming language)
  • PC-LISP英语PC-LISP
  • PicoLisp
  • Portable Standard Lisp英语Portable Standard Lisp
  • RPL英语RPL (programming language)
  • S-1 Lisp英语S-1 Lisp
  • SKILL
  • Spice Lisp英语Spice Lisp
  • T英语T (programming language)
  • Zetalisp英语Zetalisp
Logo
  • MSWLogo英语MSWLogo
  • NetLogo
  • StarLogo英语StarLogo
  • UCBLogo英语UCBLogo
  • Common Lisp界面管理器英语Common Lisp Interface Manager
  • McCLIM英语McCLIM
  • Genera英语Genera (operating system)
  • Scsh英语Scsh
  • Lisp机器
  • TI Explorer英语TI Explorer
  • Space-cadet键盘英语Space-cadet keyboard
实践
社群
技术标准
  • Scheme实现要求英语Scheme Requests for Implementation
  • Common Lisp HyperSpec英语Common Lisp HyperSpec
  • X3J13英语X3J13
教育
图书
教程
  • ProgramByDesign英语ProgramByDesign
组织
商业
  • 苹果公司
  • BBN
  • Harlequin英语Harlequin (software company)
  • Lucid Inc.英语Lucid Inc.
  • Symbolics英语Symbolics
  • Xanalys英语Xanalys
教育
人士
 
Common
Lisp
  • Scott Fahlman英语Scott Fahlman
  • Richard P. Gabriel英语Richard P. Gabriel
  • Philip Greenspun英语Philip Greenspun
  • David A. Moon英语David A. Moon
  • Kent Pitman英语Kent Pitman
  • Guy L. Steele Jr.
  • Daniel Weinreb英语Daniel Weinreb
Logo
  • 分类 语言
  • 分类 家族
  • 列表级条目 列表英语List of Lisp-family programming languages