新澤西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).