Standard ML(SML),是一個函數式、指令式、模塊化[1]的通用的程式語言,具有編譯時間類型檢查和類型推論[5]。它流行於編譯器作者和程式語言研究者和自動定理證明研究者之中。
Quick Facts 編程範型, 語言家族 ...
Standard ML編程範型 | 多范型:函數式, 指令式, 模塊化[1] |
---|
語言家族 | ML |
---|
釋出時間 | 1983年,41年前(1983)[2] |
---|
型態系統 | 類型推論, 靜態, 強類型 |
---|
文件擴展名 | .sml |
---|
網站 | Standard ML Family GitHub Project |
---|
|
SML/NJ, MLton |
|
Concurrent ML, Dependent ML, Alice |
|
ML, Hope, Pascal |
|
ATS, Elm, F#, F*, Haskell, OCaml, Python[3], Rust, Scala |
Close
Standard ML是ML的現代方言,ML是用於LCF(可計算函數邏輯)定理證明計劃的程式語言。Standard ML在廣泛使用的語言之中與眾不同,源於它具有正式規定《The Definition of Standard ML》
[4],給出了語言的類型規則和操作語義[6]。
存在很多SML實現,包括:
標準:
派生:
研究:
- Isabelle/ML,劍橋大學的Larry Paulson開發的Isabelle,將並行Poly/ML集成入交互式定理證明器[18],它具有一個高端的IDE(基於了jEdit),用於官方Standard ML(SML'97)、Isabelle/ML方言和這個證明語言[19]。開始於Isabelle2016,它還有一個原始碼級的ML的調試器。
- CakeML[20],是一個基於了SML實質性子集的語言,它實現為x86-64機器碼的REPL,帶有正式驗證的運行時間庫和到匯編代碼的轉換。
- TILT[21],是一個完全驗證了的SML編譯器,它使用有類型的中間語言來優化代碼和確保正確性,並可以編譯成有類型的匯編語言。
- Poplog系統實現一個版本的SML,還有POP-11、可選的Common Lisp和Prolog,允許混合語言編程。
所有這些實現都是開源的並可自由的獲得。其中多數用SML實現了自身。不再有任何商業SML實現。
證明輔助器HOL4、Isabelle、LEGO和Twelf是用Standard ML寫成。它還用於編譯器製作和集成電路設計比如ARM[22]。
The Isabelle/Isar Implementation (PDF). [2021-09-01]. (原始內容 (PDF)存檔於2021-09-01). Isabelle/ML is best understood as a certain culture based on Standard ML. Thus it is not a new programming language, but a certain way to use SML at an advanced level within the Isabelle environment. This covers a variety of aspects that are geared towards an efficient and robust platform for applications of formal logic with fully foundational proof construction — according to the well-known LCF principle. There is specific infrastructure with library modules to address the needs of this difficult task.