2016-03-21 8 views
0

私はSMLを全く新しくしていて、それに関連するものをどのように扱うのか分かりません。 SMLNJコンパイラを使用する予定で、現在はNotepad ++を使ってコーディングしています。 しかし、プログラムを正確にコンパイルするにはどうしたらいいですか? SMLNJコマンドラインでコードをコピーして貼り付けますか?または、SMLNJの環境があり、実際にコードを記述してコンパイルすることはできますか? お願いします!コードがNotepad ++のときにSMLNJを使ってSMLをコンパイルするには?

+3

「コンパイル」とは、「スタンドアロンの実行可能ファイルにコンパイル」を意味する場合は、今すぐそのことを心配しないでください。 SML/NJには実際に定義されている増分コンパイラであるREPL(Read-Evaluate-Print-Loop)に基づくコマンドラインベースのコマンドラインがあります。つまり、現在定義されている関数のコンテキストで新しく定義された関数をコンパイルします。まず最初に、REPLに直接入力された短いスニペットを試してみましょう。まもなくしばらくすると、NotePad ++のようなコードでコードを書くことになります。ファイルを書き、 '.sml'拡張子で保存してから、REPL型で' use "filename"; 'をタイプしてロードします。 –

+0

@JohnColeman:答えとして投稿するように気をつけますか? – ruakh

+0

@ruakh私は自分が持っていたものでこれをすることを躊躇していましたが、あなたのコメントは私にそれを広げるよう促しました。 –

答えて

1

「コンパイル」とは、「スタンドアロン実行可能ファイルにコンパイル」を意味します。完全な答えとして言語を最初に学習したときに心配する必要はありません。原理的には実用的な問題があるようですが(this優れた回答詳細)、可能です。

一方、SML/NJには、実際にがコンパイラであるであるコマンドラインベースのREPL(Read-Evaluate-Print-Loop)があります。 incremental compilerです。つまり、現在定義されている関数のコンテキストで新たに定義された関数をコンパイルします。まず最初に、REPLに直接入力された短いスニペットを試してみましょう。まもなくしばらくすると、NotePad ++のようなコードでコードを書くことになります。ファイルを書き込んで.sml拡張子で保存してから、REPLタイプに保存してください。

use "filename"; 

そして、定義をロードしてコンパイルします。

私が時々使うトリックは、次のとおりです。私のファイルの上に私はこのようなコメントしている:

(* val _ = (use "C:/Programs/sets.sml", OS.Process.system "cls");  *) 

ここsets.smlはちょうど私が私のマシン上で持っているSMLファイルであることを起こります。私がファイルを編集し終えたら、それを保存して(valで始まりセミコロンに伸びる)コメントの内部をクリップボードにコピーし、開いているSML REPLに貼り付けます(コマンドウィンドウの編集メニューを使用します)。コマンドウィンドウの左上隅にあるアイコンを押すとポップアップします)。これにより、定義がロードされ、定義を試すREPLがクリアされます。

メモ帳++はSML用の構文定義ファイルが不足しているようです(ただし、F#用には十分に近いかもしれませんが)。個人的には、Textpadを使用して自分のSMLのほとんどを行います。これはオープンソースではありませんが、合理的な価格でnagwareで、これはNotepad ++とほぼ同等です。彼らのウェブサイトから、あなたのコードを論理的にハイライトする素晴らしい仕事をする有用なSML構文定義ファイルをダウンロードすることができます。私は、ファイルを自動的に保存し、SMLを開き、ファイル名にuseを呼び出すTextpadツール(これは不明な理由でのみ散発的にしか動作しません)を作成しました。

関連する問題