5

大学でMLを学ぶのが本当に好きです。関数型プログラミングは、しばしば、特定のアルゴリズムを記述するための爽やかで上品な方法です。私はF#のことを聞いたことがありますし、周りに少し遊んだ。それでも、私はMLで興味深い機能を書いており、他のアプリケーションで使用できるライブラリとしてそれらを統合したいと考えています。「実世界」アプリケーションでMLを使用する

通常、私はSMLnjインタープリタに自分の関数を貼り付けます。私がそれらをコンパイルする方法はありますか?

+1

SMLnjもコードをコンパイルできます。CM、コンパイルマネージャーを探します。 (これは実際に他のアプリケーションへの統合には役立ちませんが)。 – ephemient

答えて

5

the MLj Compilerのようなものを使用する必要があります。 Javaバイトコードにコンパイルされます。または、SML.NETコンパイラを使用して.NET ILにコンパイルすることもできます。

+0

美しいですが、どちらも2つの良いオプションのように見えます。 – Chet

4

MLは、両側でCにエクスポートし、次にそれぞれのC関数を呼び出します。すべてが「簡単」C.

にエクスポートするためのFFIライブラリを持っているちょうど約

http://www.smlnj.org/doc/SMLNJ-C/index.html

ので、外の世界にあなたのSMLライブラリがassiciatedセグメンテーション違反やメモリリーク外を除いてCライブラリのように振る舞うでしょう*

*保証はありません

2

プロジェクトは言語を普及させています。 MLを使って、面白くて容赦のない「クール」なプロジェクトのための土台が働き、人々はその言語に集まりますか?たとえば、Erlangをejabberdとmochiwebで見ると、erlangのようなワン・タイム・ダイアモンド・イン・ザ・ラブ言語(これはbtw、私の開発言語の選択肢)の不思議な出来事でした。私は1つは、誰かがMLとラッドを作ることを見たいと思う、言語は考えて喜びです。

2

several Standard ML compilersがあります。 MLton wikiにはbenchmarkも含まれています。

標準MLをバイトコードにコンパイルするモスクワMLを使用しました。それは速くはないが、それは機能する。 MLtonはしばしば効率に関して最高の標準MLコンパイラであると言われています。

0

Poly/MLバージョン5以降では、従来の「ヒープダンプ」モデルとCスタイルのスタンドアロン実行可能ファイルの両方をサポートしています。 Poly/ML websiteのドキュメントは、多くの異なる場所に広がっていますが、そのうちのいくつかはタイトルの中に本当に古い日付が付いていますが、システムは生きていて蹴っています。

オブジェクトコードの生成については、バージョン5.0のリリースではrelease notes(現時点では5.5)です:PolyML.exportを参照してください。

最近いくつかのGUIプロジェクトで使用されているように改装されたPoly/ML Cインターフェイスもあります。 polymlメーリングリストに尋ねるべきです。

関連する問題