标准ML 1983年提出,从84年到88年设计, 并在中定义 定义 标准ML (米尔纳,托夫特,哈珀,麻省理工出版社,1990年) , 用一个 评论 米尔纳和托夫特(MIT出版社,1990年)。
标准ML'97是 对语言进行适度修改(和简化), 定义于 标准ML的定义 (修订版) (米尔纳,托夫特,哈珀,麦奎因,麻省理工出版社,1997) .
修改后的语言名称仍然是“Standard ML”,但我们也 将其称为“Standard ML’97”或“SML’97”以区分 从1990年的版本,可以称为“SML'90”。
同时,新的 SML基础库 已添加到 语言的规范。 新的基础库旨在支持广泛的系统 和应用程序编程:它指定 提供基本类型的预定义模块的广泛集合, 输入/输出设施,以及与 以便携方式承载操作系统。
下面是SML’97语言变化的重点。 有关更改的更多详细信息,以及如何转换的建议 要在SML'97下运行的SML'90代码,请参阅 SML’97转换指南 .
主要语言发生变化 97年SML 是:
命令式变量的消除 .角色 命令型变量在约束多态性中的存在 的效果现在由 价值限制 ,其中 仅当正确 手侧是一种受限形式的表达式,称为 价值 表达 。值表达式可以是常量、变量、, 函数表达式(即lambda表达式)或 这些元素使用产品和结构。
消除结构共享 。类型共享仍然存在 可用,并且结构共享符号保持不变,但 在较弱的意义上解释为一种间接表达类型的方式 共享。类型共享的作用受到了一些限制,以便不 与类型定义冲突。
在签名中添加类型定义 。有 也是一个新的 其中类型 允许修改 通过为其类型组件添加定义来现有签名。 新形式的数据类型规范和定义允许数据类型 定义为与现有数据类型相同。
文档
A类 SML’97转换指南 涵盖了从 SML/NJ 0.93至SML’97(SML/NJ110)。 一个有用的转换辅助工具是 顶级环境比较 , 它总结了 SML/NJ 0.93(这是一些旧教科书假定的)和新SML '97(SML/NJ 110)顶级。 完整的文档 基础库 在线提供。
教科书
以下新版本的ML编程教科书描述了SML'97。
启动位置
新泽西州标准ML SML/NJ版本 110 并在以后实现SML '97加上一些额外的功能(向量表达式和模式、OR模式、, 签名中有类型,高阶模块)。 莫斯科ML 基于Caml Special Light代码的实现。 模块系统提供了一些额外的功能(高阶模块、, 一级结构、递归模块)。 ML套件 ML Kit实现了SML'97并使用区域分析进行内存 管理层。 模块系统使用一个名为 “静态解释”。 MLton公司 SML'97的全程序编译器。 PolyML公司 版本4和更高版本实现SML'97。