28

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

4

6 に答える 6

22

SublimeText2でSMLを構成する方法

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

このガイドを使用するには、smlnjがすでにインストールされている必要があります。

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

SublimeText2をダウンロードすることから始めます。SML構文のサポートはバージョン3ではまだ機能しないため、必ずバージョン2をダウンロードしてください。

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

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

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

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

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

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

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

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

  • まず、[設定]->[パッケージの参照]に移動します
  • SublimeREPL / config/SMLサブフォルダーに移動します。
  • Default.sublime-commandsSublimeText自体でファイルを編集します。このファイルには、[ツール]->[SublimeREPL]メニュー内の現在のSMLメニューオプションが含まれています。そこで、これを変更して、新しいSMLREPLセッションで既存のファイルを実行できる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"
          }  
        }  
    ]
    

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

ステップ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を使用したコーディングを開始する準備がほぼ整いました。

于 2014-10-16T12:16:25.993 に答える
19

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

厳密に言えば、Isabelle環境は対話型の自動定理証明用ですが、そのSML IDEサポートは非​​常に洗練されています。ユーザーが編集している間、ソースファイルは静的にチェックされ、意味的に評価されます。注釈付きのソースには、推測されたタイプに関するマークアップ、アイテムの位置を定義するための参照などが含まれています。

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

SML-PIDE

于 2013-12-07T20:13:42.110 に答える
11

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

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

于 2010-01-10T11:06:57.657 に答える
7

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

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

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

于 2010-01-10T10:56:11.920 に答える
6

私はWindows用のSchemeIDEを開発しています。それは「バベッジ」と呼ばれています。OCamlとSMLのモードもあります。それは最小限のEmacsのようなものです。バベッジは非常にシンプルで、キー割り当てのようなウィンドウがあります。バベッジはUnicodeエディタです。

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

于 2011-09-20T20:17:59.430 に答える
2

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

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

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

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

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

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

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

  • 貧しい人のコンテンツ支援として、標準の単語補完コマンド(Shift + Alt + 7 )を使用します。

  • 標準の[ブロック選択の切り替え]コマンド(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プロジェクトの作者です。

于 2013-07-20T10:42:04.643 に答える