SML#の特徴
SML#は,以下のような特徴をもったML系関数型プログラミング言語です.
-
Standard MLとの後方互換性 SML#は,ML系言語の標準の厳密な仕様であるStandard MLとの後方互換性を持っています. わずかな例外を除いて,Standard MLの形式的な仕様を満たすすべてのプログラムをコンパイルできます.
-
レコード多相性 レコード多相性は,オブジェクトやデータベースのタプルなどに現れるラベル付きレコードをML言語に 完全に統合するために必要な型システムの機能です. SML#は,この機能を完全にサポートしています.
-
SQLのシームレスな統合 SQLはデータベースの標準問い合わせ言語であり,データベースを利用 するプログラムで必ず必要となる機能です. SML#は,SQLの一部の機能をライブラリとして提供するのでは なく,SQLクエリそのものを多相型をもつ第一級の式として統合しています. この機能により,複雑なプログラムデータベース操作を,MLプログラム の中で直接プログラムすることができます.
-
C言語との直接連携 システムプログラミングを含む種々のOSの機能の利用にはC言語で記述 されたライブラリへのアクセスが必要となります. SML#では,名前を外部名宣言するだけで,C言語で書かれCコン パイラでコンパイルされた関数を呼び出すことができます.
-
マルチコアCPU上のネイティブスレッドのサポート SML#の並行かつオブジェクトを動かさないGCの機能により, C言語との連携機能を使い,OSのスレッドライブラリを直接呼び出すことができ ます. 従って,OSがマルチコアCPU上での並列実行をサポートしさえすれば, スレッドを使った高水準なMLプログラムを書き,マルチコアCPU上で効率良く 実行することができます.
-
分割コンパイルとリンク SML#は,従来のインクリメンタルなコンパイルではない,真の分 割コンパイルを実現しています. 各モジュールのインターフェイスの確定後は,各モジュールを独立に開 発しコンパイルやテストできます. さらに,SML#コンパイラは,分割コンパイルの対象となる各ソー スコードを,システム標準のオブジェクトファイル(例えばLinuxならば ELFフォーマット)にコンパイルし,システムのリンカーでCのライブラリなどと ともにリンクします. この機能により,Standard MLだけでなくC言語やSQLなどをも使う 大規模プログラムを安全かつ効率的に開発することができます.