新泽西Standard ML
新泽西Standard ML(“Standard ML of New Jersey”或简写SML/NJ:新泽西标准元语言),是针对Standard ML编程语言的自由且开源的编译器和编程环境,它还支持Concurrent ML。除了它的运行时系统是用C写成之外,SML/NJ大部份是用Standard ML写成的。它最初是贝尔实验室和普林斯顿大学联合开发的[2]。
编程范型 | 多范型:函数式、指令式、模块化 |
---|---|
语言家族 | ML |
設計者 | Andrew Appel, David MacQueen |
发行时间 | 1986年 |
当前版本 |
|
型態系統 | 强类型, 静态, 类型推论 |
許可證 | 宽松许可证[1] |
文件扩展名 | .sml |
網站 | www |
啟發語言 | |
Standard ML | |
影響語言 | |
Mythryl |
特征
SML/NJ向SML'97基础库扩展了一些额外的顶层结构[3]:
- 系统信息:
SysInfo
结构提供了关于运行时间系统的信息,比如操作系统种类、类型和版本,是否机器支持多处理器[4]。 - 弱指针:
Weak
结构提供了对弱指针的支持[5]。 - 惰性暂停:
Susp
结构实现了惰性求值(对立于及早求值)所需的暂停[6]。 - 编译器内部:
Internals
结构提供了对一些编译器内部的访问,包括实例化和修改信号表格的方法[7]。 - 不安全访问:
Unsafe
结构提供了对数据结构和运行时间系统函数的不安全访问[8]。 - 可视编译器结构:SML/NJ还包括了提供到ML编译器访问的结构,它包含用于执行剖析、编译器错误信息打印和警告、和可定制的精美打印的子结构[9]。
此外,SML/NJ提供了并非SML'97的标准特征的一些语法构造[3]:
- 向量扩展和模式:SML/NJ允许使用
#[exp0, exp1, ..., expn−1]
语言创建向量,并允许以类似的语法在它们上进行模式匹配。 - Or模式:SML/NJ扩展了SML'97模式的语法,使用
(apat1 | ... | apatn) => exp
,允许在一个单一规则中匹配多个模式,这里假定了每个模式都有相同的类型。 - 目标语言嵌入:SML/NJ提供了引述/反引述(quote/antiquote)语法,它们允许在ML表达式和程序中,有合乎目标语言的具体语法的表达式嵌入[10]。
- 高阶模块:SML/NJ在Standara ML的函子形式的参数化模块之外,通过允许函子成为结构的成员而支持函子的参数化。
发展
“Successor ML”是用来描述ML语言的下一个版本的术语。描述它的文档已经从SML/NJ '97文件中提取出来,并放在GitHub仓库中以便获取为TeX文档,它由期望通过协作增进语言的社群维护[11]。Successor ML特征可以使用命令行选项-Cparser.succ-ml=true
来启用[12]。
至少从1998年开始[13],MLton成为了标准引导编译器[14],它拥有对Successor ML的某些支持[15]。
在2008年,开始了在HaMLet上的工作[16],它是完全用Standard ML写成的Successor ML的参考实现[17]。截止2018年,HaMLet仍旧是Successor ML的唯一完整实现,并具有额外的新奇事物[15]。
自从2015年[18],SML/NJ的演进侧重发展基础库[19],并在版本110.79的发行中增加了对Successor ML定义的支持[12]。
参见
引用
- ^ Standard ML of New Jersey License. www.smlnj.org. [2021-09-24]. (原始内容存档于2021-11-10).
- ^ SML/NJ background information. www.smlnj.org. [2018-09-05]. (原始内容存档于2021-04-20).
- ^ 3.0 3.1 SML/NJ Special Features. www.smlnj.org. [2018-09-05]. (原始内容存档于2020-08-17).
- ^ The SYS_INFO signature. www.smlnj.org. [2018-09-05]. (原始内容存档于2021-05-15).
- ^ The WEAK signature. www.smlnj.org. [2018-09-05]. (原始内容存档于2021-05-15).
- ^ The SUSP signature. www.smlnj.org. [2018-09-05]. (原始内容存档于2021-07-15).
- ^ The INTERNALS signature. www.smlnj.org. [2018-09-05]. (原始内容存档于2021-05-15).
- ^ The Unsafe structure. www.smlnj.org. [2018-09-05]. (原始内容存档于2021-05-15).
- ^ The Visible Compiler. www.smlnj.org. [2018-09-05]. (原始内容存档于2021-04-27).
- ^ SML/NJ Quote/Antiquote. www.smlnj.org. [2018-09-05]. (原始内容存档于2021-02-25).
- ^ Successor ML Definition. [2021-09-24]. (原始内容存档于2020-11-07).
- ^ 12.0 12.1 Standard ML of New Jersey version 110.79 NEWS. 2015-10-04 [2021-09-24]. (原始内容存档于2020-07-28).
- ^ MLton 1999-03-19 change notes. [2021-09-24]. (原始内容存档于2021-09-24).
- ^ The MLton repository. [2021-09-24]. (原始内容存档于2021-10-20).
- ^ 15.0 15.1 Three implementation efforts to support Successor ML. [2021-09-24]. (原始内容存档于2020-11-07).
- ^ Andreas Rossberg. HaMLet S: To Become Or Not To Become Successor ML (PDF). [2021-09-24]. (原始内容存档 (PDF)于2021-03-01).
- ^ SML reference interpreter. [2021-09-24]. (原始内容存档于2021-09-24).
- ^ 18.0 18.1 Standard ML of New Jersey Change Log for v110.99. [2021-09-24]. (原始内容存档于2021-01-28).
- ^ The Standard ML Basis Library. [2021-09-24]. (原始内容存档于2021-10-26).