Standard ML

Standard MLSML)是通用的模块化函数式编程语言,具有编译时间类型检查类型推论。它流行于编译器作者和编程语言研究者和自动定理证明研究者之中。

Standard ML
多范式: 函数式, 指令式, 模块化[1]
语言家族ML
1983年1983[2]
穩定版本
Standard ML '97[2]
(1997年1997
型態系統类型推论, 静态, 强类型
文件扩展名.sml
網站
主要實作產品
SML/NJ, MLton
衍生副語言
Alice, Concurrent ML, Dependent ML
啟發語言
ML, Hope, Pascal
影響語言
Elm, F#, F*, Haskell, OCaml, Python[3], Rust, Scala

Standard ML是ML的现代方言,ML是用于可计算函数逻辑(LCF)定理证明计划的编程语言。Standard ML在广泛使用的语言之中与众不同,源于它具有正式规定《The Definition of Standard ML》,给出了语言的类型规则操作语义[4]

实现

存在很多SML实现,包括:

  • 新泽西Standard ML(缩写为SML/NJ)是一个完全的编译器,有着关联的库、工具、交互式外壳和文档[5]
  • 莫斯科ML页面存档备份,存于[6],是一个轻量级实现,基于了CAML Light运行时引擎。
  • MLton,是一个完整程序优化编译器,它产生相比其他ML实现非常快的代码[7]
  • ML Kit页面存档备份,存于[8],集成了一个垃圾收集器(它可以弃用)和带有自动区域推论的基于区域内存管理,意图支持实时应用。它的实现非常紧密的基于了标准定义。
  • Poly/ML页面存档备份,存于[9],是一个Standard ML的完全的实现,它产生快速代码并支持多核硬件(通过Posix线程);它的运行时间系统进行并行垃圾收集和不可变子结构的线上共享。
  • Isabelle/ML页面存档备份,存于[10],将并行Poly/ML集成入交互式定理证明器,带有一个复杂的IDE(基于了jEdit)用于官方Standard ML(SML'97)、Isabelle/ML方言和这个证明语言。开始于Isabelle2016,还有一个源代码级的ML的调试器。
  • CakeML页面存档备份,存于[11],一个读取﹣求值﹣输出循环版本的ML,带有正式验证的运行时间库和到汇编代码的转换。
  • HaMLet页面存档备份,存于[12],是一个SML解释器,意图成为精确和可接近的标准定义的参考实现。
  • TILT页面存档备份,存于[13],是完全验证了的SML编译器。它使用有类型的中间语言来优化代码和确保正确性,并可以编译成有类型的汇编语言
  • SML.NET页面存档备份,存于[14],允许编译成Microsoft CLR并拥有同其他.NET代码连接的扩展。
  • SML2c页面存档备份,存于[15],是一个批处理编译器而只能把模块级声明(也就是签名、结构、函子)编译成C。它基于了SML/NJ版本0.67并共享了这个前端,和它的多数运行时间系统,但是不支持SML/NJ风格的调试和剖析。运行在SML/NJ上的模块级程序可以不加改变的用sml2c编译。
  • Poplog系统实现一个版本的SML,还有POP-11、可选的Common LispProlog,允许混合语言编程。
  • SML#页面存档备份,存于[16],是一个SML扩展,提供了记录多态性和C语言互操作性。它是常规的原生编译器,它的名字不暗示着要在.NET框架上运行。
  • Alice,一个Standard ML解释器,萨尔兰大学增加了惰性求值并发性多线程和通过远程过程调用分布式计算)和约束编程特征。
  • SOSML页面存档备份,存于[17],是用TypeScript写的SML实现,可以直接运行在web浏览器内。它实现了大多数SML语言和选择的部份SML基本库。

所有这些实现都是开源的并可自由的获得。其中多数用SML实现了自身。不再有任何商业SML实现。

参见

引用

  1. . [2020-02-22]. (原始内容存档于2015-06-10).
  2. . www.smlnj.org. [2020-04-25]. (原始内容存档于2017-07-22).
  3. . docs.python.org. [2020-04-25]. (原始内容存档于2020-06-14).
  4. Milner, Robin; Tofte, Mads; Harper, Robert; MacQueen, David. . MIT Press. 1997. ISBN 0-262-63181-4.
  5. . [2020-04-25]. (原始内容存档于2020-05-01).
  6. . [2020-09-20]. (原始内容存档于2020-01-24).
  7. . [2020-09-27]. (原始内容存档于2020-08-28).
  8. . [2020-09-20]. (原始内容存档于2018-11-28).
  9. . [2020-09-20]. (原始内容存档于2020-06-27).
  10. . [2020-09-27]. (原始内容存档于2020-08-30).
  11. . [2020-09-20]. (原始内容存档于2020-09-14).
  12. . [2020-09-20]. (原始内容存档于2016-10-14).
  13. . [2020-09-20]. (原始内容存档于2018-06-11).
  14. . [2020-09-20]. (原始内容存档于2019-09-11).
  15. . [2020-09-20]. (原始内容存档于2018-08-28).
  16. . [2020-09-20]. (原始内容存档于2020-06-08).
  17. . [2020-09-20]. (原始内容存档于2020-09-12).

外部链接

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