Standard ML
跳至導覽
跳至搜尋
腳本錯誤:沒有「Infobox」這個模塊。腳本錯誤:沒有「Check for unknown parameters」這個模塊。 Standard ML(SML),是一個函數式、指令式、模塊化[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]。
派生:
- SML#[14],是日本東北大學Template:Le開發的SML家族新語言,提供了記錄多態性和C語言互操作性。它是常規的本機編譯器,名字的「#」號不暗示着要在.NET框架上運行。
- Template:Le,Alice ML是薩爾蘭大學開發的基於Standard ML的函數式編程語言,它增加了惰性求值、並發性(多線程和通過遠程過程調用的分佈式計算)和約束編程特徵。
- SOSML[15],是用TypeScript寫的SML實現,可以直接運行在web瀏覽器內。它實現了大多數SML語言和選擇的部份SML基本庫。
研究:
- 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 Lisp和Prolog,允許混合語言編程。
所有這些實現都是開源的並可自由的獲得。其中多數用SML實現了自身。不再有任何商業SML實現。
使用SML的項目[編輯]
證明輔助器Template:Le、Isabelle、Template:Le和Template:Le是用Standard ML寫成。它還用於編譯器製作和集成電路設計比如ARM[20]。
參見[編輯]
引用[編輯]
- ↑ 引用錯誤:無效的
<ref>標籤,未定義名稱為“module”的參考文獻內容文字。 - ↑ 腳本錯誤:沒有「citation/CS1」這個模塊。
腳本錯誤:沒有「citation/CS1」這個模塊。 - ↑ Template:Cite web
- ↑ Template:Cite journal
- ↑ Template:Cite web
- ↑ Template:Cite web
- ↑ ML Kit(頁面存檔備份,存於互聯網檔案館)
- ↑ Template:Cite web
- ↑ Poly/ML(頁面存檔備份,存於互聯網檔案館)
- ↑ Template:Cite web
- ↑ HaMLet(頁面存檔備份,存於互聯網檔案館)
- ↑ Template:Cite web
- ↑ Template:Cite web
- ↑ SML#(頁面存檔備份,存於互聯網檔案館)
- ↑ SOSML(頁面存檔備份,存於互聯網檔案館)
- ↑ Isabelle(頁面存檔備份,存於互聯網檔案館)
- ↑ Template:Cite web
- ↑ CakeML(頁面存檔備份,存於互聯網檔案館)
- ↑ TILT(頁面存檔備份,存於互聯網檔案館)
- ↑ 腳本錯誤:沒有「citation/CS1」這個模塊。
外部連結[編輯]
- Standard ML Family GitHub Project(頁面存檔備份,存於互聯網檔案館)
- Programming in Standard ML(頁面存檔備份,存於互聯網檔案館)
- cmlib - A basic library of algorithms and data structures (a la NJlib) (頁面存檔備份,存於互聯網檔案館)
- SML Help (頁面存檔備份,存於互聯網檔案館)
- Awesome Standard ML (頁面存檔備份,存於互聯網檔案館)
- Programming in Standard ML '97: An On-line Tutorial(頁面存檔備份,存於互聯網檔案館)
- CSE341: Programming Languages(頁面存檔備份,存於互聯網檔案館), Dan Grossman, University of Washington.
- COMP 105 pages: Learning Standard ML (頁面存檔備份,存於互聯網檔案館)
腳本錯誤:沒有「Navbox」這個模塊。