Standard ML

出自Local Chinese Wikipedia
跳至導覽 跳至搜尋

腳本錯誤:沒有「Infobox」這個模塊。腳本錯誤:沒有「Check for unknown parameters」這個模塊。 Standard MLSML),是一個函數式指令式模塊化[1]通用編程語言,具有編譯時間類型檢查類型推論[2]。它流行於編譯器作者和編程語言研究者和自動定理證明研究者之中。

Standard ML是ML的現代方言,ML是用於Template:Le(可計算函數邏輯)定理證明計劃的編程語言。Standard ML在廣泛使用的語言之中與眾不同,源於它具有正式規定《The Definition of Standard ML》 [3],給出了語言的Template:Le操作語義[4]

實現[編輯]

存在很多SML實現,包括:

標準

  • Standard ML of New Jersey(縮寫為SML/NJ),由普林斯頓大學貝爾實驗室在1986年開始聯合開發的實現,是一個完全的編譯器,具有關聯的庫、工具、交互式外殼和文檔,還支持Concurrent ML[5]
  • MLton,是一個Template:Le編譯器,它產生相比其他ML實現非常快的代碼[6]
  • ML Kit[7],由愛丁堡大學Template:Le等人在1989年發起開發[8],是一個非常緊密的基於了標準定義的實現,它集成了具有Template:Le的垃圾收集器,內存分配指令由編譯器推論,可以停用垃圾收集器來支持實時應用。
  • Poly/ML[9],由劍橋大學的David Matthews開發[10],是一個Standard ML的完全的實現,它產生快速代碼並支持多核硬件(通過Posix線程);它的運行時間系統,進行並行垃圾收集和不可變子結構的在線共享。
  • HaMLet[11],由Template:Le的Andreas Rossberg編寫,是一個SML解釋器,意圖成為精確且無障礙的標準定義參考實現。
  • Moscow ML[12],是一個輕量級實現,基於了CAML Light運行時引擎。
  • LunarML,產生Lua/JavaScript代碼的Standard ML編譯器[13]

派生

研究

  • Isabelle/ML,劍橋大學Template:Le開發的Isabelle,將並行Poly/ML集成入交互式定理證明器[16],它具有一個高端的IDE(基於了jEdit),用於官方Standard ML(SML'97)、Isabelle/ML方言和這個證明語言[17]。開始於Isabelle2016,它還有一個原始碼級的ML的調試器。
  • CakeML[18],是一個基於了SML實質性子集的語言,它實現為x86-64機器碼的REPL,帶有正式驗證的運行時間庫和到匯編代碼的轉換。
  • TILT[19],是一個完全驗證了的SML編譯器,它使用有類型的中間語言來優化代碼和確保正確性,並可以編譯成Template:Le
  • Template:Le系統實現一個版本的SML,還有Template:Le、可選的Common LispProlog,允許混合語言編程。

所有這些實現都是開源的並可自由的獲得。其中多數用SML實現了自身。不再有任何商業SML實現。

使用SML的項目[編輯]

證明輔助器Template:LeIsabelleTemplate:LeTemplate:Le是用Standard ML寫成。它還用於編譯器製作和集成電路設計比如ARM[20]

參見[編輯]

引用[編輯]

  1. 引用錯誤:無效的 <ref> 標籤,未定義名稱為 “module” 的參考文獻內容文字。
  2. 腳本錯誤:沒有「citation/CS1」這個模塊。
    腳本錯誤:沒有「citation/CS1」這個模塊。
  3. Template:Cite web
  4. Template:Cite journal
  5. Template:Cite web
  6. Template:Cite web
  7. ML Kit頁面存檔備份,存於互聯網檔案館
  8. Template:Cite web
  9. Poly/ML頁面存檔備份,存於互聯網檔案館
  10. Template:Cite web
  11. HaMLet頁面存檔備份,存於互聯網檔案館
  12. Template:Cite web
  13. Template:Cite web
  14. SML#頁面存檔備份,存於互聯網檔案館
  15. SOSML頁面存檔備份,存於互聯網檔案館
  16. Isabelle頁面存檔備份,存於互聯網檔案館
  17. Template:Cite web
  18. CakeML頁面存檔備份,存於互聯網檔案館
  19. TILT頁面存檔備份,存於互聯網檔案館
  20. 腳本錯誤:沒有「citation/CS1」這個模塊。

外部連結[編輯]

腳本錯誤:沒有「Navbox」這個模塊。