新澤西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]。
參見
- Extended ML
- Dependent ML
引用
外部連結
Wikiwand in your browser!
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.