| パラダイム | マルチパラダイム:機能的、命令的 |
|---|---|
| 家族 | ML :標準ML |
| 開発者 | ベル研究所、 プリンストン大学、 ルーセントテクノロジー、 イェール大学(FLINTプロジェクト)、 AT&Tリサーチ[1] |
| 初登場 | 1988年 |
| 安定リリース | 110.99.4
/ 2023年8月1日 |
| タイピングの規律 | 強い、静的、推測された |
| 実装言語 | 標準 ML、C |
| ライセンス | BSD系[2] |
| ファイル名拡張子 | .sml |
| Webサイト | 詳しくはこちら |
| 影響を受けた | |
| 標準ML | |
| 影響を受けた | |
| ミスリル | |
Standard ML of New Jersey(SML/NJ ; Standard Meta-Language of New Jersey)は、プログラミング言語Standard MLのコンパイラおよび統合開発環境です。ランタイムシステムがC言語であることを除き、Standard MLで書かれています。もともとはベル研究所とプリンストン大学が共同で開発しました。[1]寛容なソフトウェアライセンス(BSDライク) の下でリリースされた無料のオープンソースソフトウェアです。
その名前は、プリンストン研究所とベル研究所があるアメリカのニュージャージー州と、 20 世紀初頭の 有名な石油独占企業であるスタンダード・オイル・オブ・ニュージャージーの両方に由来しています。
特徴
SML/NJはSML'97 Basis Libraryを拡張し、いくつかのトップレベル構造を追加しました: [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は引用符/反引用符構文を提供し、ML式やプログラム内にオブジェクト言語の具体的な構文で式を埋め込むことを可能にします。[10]
- 高階モジュール- SML/NJ は、関数の形式の Standard ML のパラメトリック モジュールに加えて、関数を構造体のコンポーネントにできるようにすることで、関数のパラメーター化をサポートします。
発達
Successor MLは、言語の次のバージョンを表すために使用される用語です。それを説明する文書はSML/NJ '97ファイルから抽出され、コミュニティが協力して言語を成長させることが期待されるTeX文書のGitHubリポジトリとして提供されています。 [11] Successor ML機能は、コマンドラインオプションを使用して有効にできます。[12]-Cparser.succ-ml=true
少なくとも1998年以来、[13] MLton [14]は標準的なブートストラップコンパイラであり、Successor MLに対する いくつかの[15]サポートが含まれています。
2008年に、完全にStandard MLで書かれたSuccessor MLの参照実装であるHaMLet[16]の作業が開始されました。[ 17 ] 2018年現在、HaMLetは新しい機能が追加されたSuccessor MLの唯一の完全な実装です。[15][update]
2015年以降、[18] SML/NJの進化は、Basisライブラリ[19]の進化と、バージョン110.79のリリースによるSuccessor ML定義のサポートの追加に向けられてきました。 [12]
2020年末にはバージョン110.99のリリースで64ビットのサポートが追加されました。 [18]
参照
外部リンク
参考文献
- ^ ab 「SML/NJ背景情報」Smlnj.org 。 2018年9月5日閲覧。
- ^ 「ニュージャージー州の標準 ML ライセンス」www.smlnj.org。
- ^ ab 「SML/NJ特集」www.smlnj.org . 2018年9月5日閲覧。
- ^ 「SYS_INFO 署名」www.smlnj.org . 2018 年 9 月 5 日閲覧。
- ^ 「The WEAK signature」www.smlnj.org . 2018年9月5日閲覧。
- ^ 「SUSP署名」www.smlnj.org . 2018年9月5日閲覧。
- ^ 「内部署名」www.smlnj.org . 2018年9月5日閲覧。
- ^ 「The Unsafe structure」www.smlnj.org . 2018年9月5日閲覧。
- ^ 「The Visible Compiler」www.smlnj.org . 2018年9月5日閲覧。
- ^ 「SML/NJ Quote/Antiquote」www.smlnj.org . 2018年9月5日閲覧。
- ^ 「後継 ML の定義」。GitHub。
- ^ ab 「ニュージャージー州の標準MLバージョン110.79ニュース」。2015年10月4日。
- ^ 「MLton 1999-03-19 変更ノート」。GitHub。
- ^ 「MLton リポジトリ」。GitHub。
- ^ ab 「Successor ML をサポートするための 3 つの実装作業」。GitHub。
- ^ ロスバーグ、アンドレアス。「HaMLet S: 後継者 ML になるか、ならないか」(PDF)。
- ^ 「SMLリファレンスインタープリター」。GitHub。
- ^ ab 「ニュージャージー標準 ML v110.99 の変更ログ」。
- ^ 「標準 ML 基礎ライブラリ」。
