新泽西Standard ML
编程范型 | 多范型:函数式、指令式、模块化 |
---|---|
语言家族 | ML |
设计者 | Andrew Appel, David MacQueen |
发行时间 | 1986年 |
当前版本 |
|
型态系统 | 强类型, 静态, 类型推论 |
许可证 | 宽松许可证[1] |
文件扩展名 | .sml |
网站 | www |
启发语言 | |
Standard ML | |
影响语言 | |
Mythryl |
新泽西Standard ML(“Standard ML of New Jersey”或简写SML/NJ:新泽西标准元语言),是针对Standard ML编程语言的自由且开源的编译器和编程环境,它还支持Concurrent ML。除了它的运行时系统是用C写成之外,SML/NJ大部分是用Standard ML写成的。它最初是贝尔实验室和普林斯顿大学联合开发的[2]。
它的名字参考了普林斯顿大学和贝尔实验室所在地新泽西州和在二十世纪早期著名的石油垄断者新泽西标准石油二者。
特征
[编辑]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]。
在2020年末尾时,在版本110.99发行中增加了64-bit支持[18]。
参见
[编辑]引用
[编辑]- ^ 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).