web-dev-qa-db-ja.com

ML IDEおよびWindowsまたはLinuxまたはMac用のコンパイラ

MLでコードを書く必要があり、この言語を使用するのは初めてです。 Standard MLの開発環境はありますか? (できればWindowsの下で)。グーグル(およびstackOverFlowing!)を試しましたが、Linux用のプレーンコンパイラ(多くてもインタラクティブコンソールを使用)だけが見つかりましたが、IDEもEclipse/NetBeansプラグインもありません。何か提案はありますか?

27
Sajad Bahmani

Sublime Text2でSMLを構成する方法

SMLをプログラムするためのエディターとしてEmacsではなくSublimeTextを好む人のために、次のガイドでは、SMLで動作するようにSublimeTextを構成する方法について説明します。

このガイドを機能させるには、 smlnj をインストールしておく必要があります。

ステップ1:SublimeTextとPackageControlをインストールする

開始 Sublime Text 2のダウンロード 。 SML構文のサポートはバージョン3ではまだ機能しないため、必ずバージョン2をダウンロードしてください。

Sublime Textは、個別にインストールできるすばらしいパッケージセット(プラグインなど)をサポートしています。それらのパッケージの1つは、パッケージ制御と呼ばれます。エディターから直接他のパッケージをインストールできるようにするには、最初に パッケージコントロールのインストール を実行する必要があります。提供されたリンクは、このパッケージをインストールするために必要なことを説明しています。

ステップ2:SMLとSublimeREPLをインストールする

Package Controlがインストールされたので、他のパッケージをインストールするのは本当に簡単です。今すぐインストールする必要のあるパッケージは2つあります。プログラミング言語の構文強調表示機能をサポートするSMLと、ご想像のとおり、多くの異なるプログラミング言語のREPL機能を追加するパッケージであるSublimeREPLです。崇高なテキストに。

これらのパッケージをインストールするには、メニューに移動して[ツール]-> [コマンドパレット]を探し、「パッケージのインストール」と入力する必要があります。検索ボックスに、インストールするパッケージの名前を入力し、見つかったリストからパッケージを選択し、Enterキーを押してインストールします。上記の2つのパッケージ「SML」と「SublimeREPL」に対してこれを実行します

SMLパッケージをインストールした後、SMLファイルを開くと、エディター内で構文の強調表示機能が得られるはずです。それはあなたが設定->配色-> SML->黒曜石の息子で有効にすることができる黒曜石の息子と呼ばれる崇高なテキストテーマさえ提供します。ただし、テーマがSMLで機能するようにする必要はありません。これは単なる設定です。

SublimeREPLパッケージをインストールすると、メニューの[ツール]-> [SublimeREPL]-> [SML]に移動し、SMLを開くことができますREPL SMLパッケージを使用した構文の強調表示をサポートするセッション、およびコマンド履歴、行編集、オートコンプリート。2つのタブを並べて開くと、生活がとても楽になります。左側のタブにはSMLコードファイルがあり、右側にはSML REPL =セッション。[表示]-> [レイアウト]オプションを使用してこれを行うことができます。

ステップ3:キーボードショートカット

次に、REPLを操作するためのキーボードショートカットをいくつか追加しましょう。 SublimeREPLパッケージはほとんどキーボード構成を提供せず、提供されたものはおそらくSMLREPLではうまく機能しません。だから、これは私が通常行うことです。

  • まず、[設定]-> [パッケージの参照]に移動します
  • SublimeREPL/config/SMLサブフォルダーに移動します。
  • SublimeText自体のファイルDefault.sublime-commandsを編集します。このファイルには、[ツール]-> [SublimeREPL]メニュー内の現在のSMLメニューオプションが含まれています。そこで、これを変更して、新しいSML REPLセッションで既存のファイルを実行できる2番目のオプションを作成します。編集したファイルは次のようになります。「id」フィールドに注目してください。必要な数の異なるコマンドを定義して、それらに異なるIDを与えることができます。次のステップでは、すべてのコマンドが何をするかを定義します。

    [
        {
            "caption": "SublimeREPL: SML",
            "command": "run_existing_window_command", "args":
            {
                "id": "repl_sml",
                "file": "config/SML/Main.sublime-menu"
            }
        },
        {
            "caption": "SublimeREPL: SML - Run File",
            "command": "run_existing_window_command", "args":
            {
                "id": "repl_sml_run",
                "file": "config/SML/Main.sublime-menu"
            }
        }    
    ]
    
  • ここで、前のファイルと同じディレクトリで、Main.sublime-menuファイルを編集します。このファイルには、上記で定義されたすべてのコマンドが実行する必要があることの詳細が含まれています。私の編集したファイルは、上記の2つのコマンドを定義しています。1つは単にREPLを開くためのもので、もう1つはREPLで現在のファイルを開くためのものです。次のようになります。

    [
         {
            "id": "tools",        
            "children":
            [{
                "caption": "SublimeREPL",
                "mnemonic": "r",
                "id": "SublimeREPL",
                "children":
                [{
                    "caption": "SML",
                    "id": "SML",
                    "children": [
                        {"command": "repl_open",
                         "caption": "SML",
                         "id": "repl_sml",
                         "args": {
                            "type": "subprocess",
                            "encoding": "utf8",
                            "cmd": ["sml"],
                            "cwd": "$file_path",
                            "external_id": "sml",
                            "syntax": "Packages/SML (Standard ML)/sml.tmLanguage"
                            }
                        },
                        {"command": "repl_open",
                         "caption": "SML - Run Current File",
                         "id": "repl_sml_run",
                         "args": {
                            "type": "subprocess",
                            "encoding": "utf8",
                            "cmd": ["sml", "$file_basename"],
                            "cwd": "$file_path",
                            "external_id": "sml",
                            "syntax": "Packages/SML (Standard ML)/sml.tmLanguage"
                            }
                        }
                    ]                                
                }]
            }]
        }
    ]
    
  • 最後のステップは、この2つのコマンドのキーボードショートカットを追加することです。 「設定」->「キーバインディングユーザー」に移動し、次の2つの追加コマンドを使用してファイルを編集します。他の機能で使用されていない場合は、キーを自由に変更して、適切と思われる他のショートカットキーを使用してください。

    [
        {  
          "keys":["ctrl+alt+j","k"],   
          "command": "repl_open",      
          "args": {  
               "type": "subprocess",  
               "encoding": "utf8",  
               "cmd": ["sml"],  
               "cwd": "$file_path",  
               "syntax": "Packages/SML (Standard ML)/sml.tmLanguage",
               "external_id": "sml"
          }  
        } ,
        {  
          "keys":["ctrl+alt+j","m"],   
          "command": "repl_open",      
          "args": {  
               "type": "subprocess",  
               "encoding": "utf8",  
               "cmd": ["sml", "$file_basename"],  
               "cwd": "$file_path",  
               "syntax": "Packages/SML (Standard ML)/sml.tmLanguage",
               "external_id": "sml"
          }  
        }  
    ]
    

これで完了です。これで、を押すだけでSML REPL CTRL+JK (これは、Ctrl + Alt + Jを押してから、キーを放してKを押します)。また、現在SMLファイルで作業している場合は、 CTRL+JM それを新しいSML REPLセッションに送信します。

ステップ4:システムを構築する

Sublime Textは、コードファイルを解析して問題がないかどうかを判断し、問題がどこにあるかを正確に知らせることができる構成を提供します。これを行うには、「ビルドシステム」を構成する必要があります。構成は、実行するコマンドと出力の解釈方法を崇高なテキストに伝える単なるファイルです。 smlパーサーがプログラムの解析または実行に失敗した場合、出力は問題の場所を示します。ビルドシステムでは、このような出力を解析するための正規表現を定義し、Sublimetextが問題を含む行と列を見つけるのに役立ちます。

[設定]-> [パッケージの参照]に移動し、[ユーザー]フォルダーの下にSML.sublime-buildという名前の新しいファイルを作成し、次のようにファイルを定義します。

{  
  "cmd": ["/usr/local/bin/sml","$file"],  
  "selector": "source.sml",  
  "working_dir": "$file_path",
  "file_regex": "^(.*\\.sml):(\\d+)\\.(\\d+)(\\-(\\d+)\\.(\\d+))?\\s(.*)$"
 } 

コマンドパスをシステム内の有効なパスに置き換えてください。ファイルを保存したら、メニューに移動して、[ツール]-> [ビルドシステム]-> [SML]を選択できます。次に、ファイルを確認するには、[ツール]-> [ビルド]を実行してファイルを解析し、エラーを見つけます。また、メニューオプションの[ツール]-> [ビルド結果]-> [次の結果]と[前の結果]を使用すると、ビルドシステムオプションで検出されたエラー間を移動できます。SublimeTextは、SMLコンパイラによって報告されたエラーの正確な位置にカーソルを置きます。 。

上記の私の正規表現は最適ではない可能性があるので、必要に応じて自由に改善してください。

以上です。これで、SMLとSublimeTextを使用してコーディングを開始する準備がほぼ整いました。

21
Edwin Dalorzo

Isabelle/jEdit as IDE for Isabelle/MLまたは公式のStandardML(SML'97)を使用できます。基盤となるMLシステムは Poly/ML 、これはマルチコアハードウェアのサポートで注目に値します。

厳密に言えば、Isabelle環境はインタラクティブで自動化された定理証明用ですが、その SML IDE support は非常に洗練されています:ソースファイルは静的にチェックされ、ユーザーが編集。注釈付きのソースには、推測されたタイプに関するマークアップ、アイテムの位置を定義するための参照などが含まれています。

クイックスタートとして、ドキュメントパネルの「例」セクションのエントリsrc/Tools/SML/Examples.thy(Isabelle2014以降)を参照してください。

SML-PIDE

20
Makarius

WindowsでSMLを使用しているときは、コンパイルに SML/NJ を使用し、編集に Notepad ++ を使用しています(Notepad ++にはCamlの構文の色付けがあり、SMLの構文と同じである必要があります。あなたの要望)。

前述のように、MLの場合は単純なエディターで十分です。

11
Oak

SMLの場合、いくつかのEmacsモードが存在します。詳細については、 http://mlton.org/Emacs を確認してください。

Sml-modeは、SMLコードを書くための良い環境を提供するはずです。 Eclipse&Co。は、Javaにはアクセサ、アダプタなどの定型的なものがたくさん必要であるという事実のために開発されました。MLに同じ機能が必要な場合は、次のことを再確認する必要があります。過剰設計ではありません。

編集:ちなみに、SMLNJにはEclipseプラグインが付属しています。リンクを投稿することはできませんが、smlnjEclipseをグーグルで検索してください。

7
Damg

私はScheme IDE forWindowsを開発しています。これは "Babbage"と呼ばれます。OCamlとSMLのモードもあります。最小のEmacsのようなものです。Babbageは非常にシンプルで、キー割り当てのようなウィンドウがあります。 .BabbageはUnicodeエディタです。

http://homepage1.nifty.com/~skz/Entry/babbage.html

6

Eclipseは、洗練された特定の言語プラグインがなくても、非常に便利な機能を取得するように設定できます。

私は 新しい言語用にEclipseをセットアップするためのガイド を維持しています。そのドキュメントからのいくつかのハイライト:

  • 構文の色Eclipse Colorer のいずれかで追加できます。これらは、SMLやOCamlを含む多数の言語の構文の色を提供するプラグインです。カスタムカラーファイルを使用して、新しい言語を簡単に追加できます。

  • build Eclipse内から外部コンパイラを使用するには、標準のProgram Builder機能を使用できます。ビルダーは、通常のBuild Projectコマンドが発行されたときに実行されます。新しいビルダーを設定するには:プロジェクトのプロパティ->ビルダー->新規...->プログラムまたは以下のLaid BuildMarkerプラグインを使用します。

  • コンパイルエラーと警告をキャプチャする外部ビルダーからビルド出力パーサーを使用できます。 Laid Builder Marker は、このようなパーサーを実装するプラグインです。パーサーは、エディターと問題ビューに問題マーカーを配置します。このプラグインを使用して、プログラムビルダーをプロジェクトに追加することもできます。 Cabalのビルダーを出発点として使用できます。

  • runコンパイルされたプログラムをEclipse内から使用するには、外部ツール機能を使用します。 (実行->外部ツール

  • コードナビゲーションとテキスト選択の拡張サポートは、他のいくつかのLaid Projectプラグインで追加できます。 マーカーブロック選択 プラグインを使用して、囲まれたテキストを選択できます。括弧である。 Editor Utilities プラグインを使用すると、特に、空白行で区切られたコードのブロック間をジャンプできます。

  • 標準のWord Completionコマンド(Shift + Alt + 7)を貧しい人のコンテンツアシストとして使用します。

  • 標準のToggle Block Selectionコマンド(Shift + Alt + A)を使用して、複数の行の行コメントを同時に挿入/削除します。

  • その他の便利な標準Eclipse機能には次のものがあります。

    • リソースを開くコマンド(Ctrl + Shift + R
    • ファイル検索コマンド(Ctrl + H
    • ブックマーク機能(編集->ブックマークの追加)。必ず次/前のナビゲーションに含めるボックス(設定->一般->エディター->テキストエディター->注釈->ブックマーク)。

レイドプロジェクトの更新サイト:

https://bitbucket.org/lii/laid_language_tools/src/master/se.lidestrom.laid.update_site/

Eclipse Colorerの更新サイト:

http://colorer.sourceforge.net/eclipsecolorer/

免責事項:私はLaidプロジェクトの作者です。

2
Lii