8

私は最近Clojureを少し学んでいます。Clojureの世界には、Scalaのようなワークシートのようなものがあり、そこに任意のコードを入れて、保存するとすぐに評価を受けることができますか?それとも、Clojureに同様のソリューションがありますか?

私は現在leinreplを使用していますが、残念ながら、これがこれまでで最も使いやすいツールであるとは言えません。

4

4 に答える 4

10

一般的なLisp開発(特にClojure)では、通常はインタラクティブプログラミングと呼ばれるプログラミングスタイルが推奨されます。開発者はアプリのイメージを常にロードし、REPLを介して対話します。ロードされたコードをその場で簡単に変更し、REPLですぐに変更をテストできます(Scalaではそれはまったく簡単ではありません-それを行うにはJRebelのようなものに頼る必要があります)。比較すると、Scalaワークシートはかなり原始的な解決策だと思います...

Clojureで従うワークフローは次のとおりです。

  1. EmacsでnREPL.elを開きます-これにより、lein2プロジェクトにすべての依存関係が読み込まれ、試してみるものを使用できるREPLが得られます
  2. 私はソースコードにいくつかのコードを書き、変更された関数をロードします(おそらくトップレベルのフォームを評価することによって)C-M-x
  3. その後、を押しC-x C-zてREPLに戻り、新しいコードを試してみます
  4. 手順2に戻ります

基本的に、ClojureREPLはScalaREPLよりもはるかに強力であり、個人的にはScalaIDEワークシートよりもはるかに優れていると思います。インタラクティブなインクリメンタルなプログラミングスタイルに慣れると、Lispは他のすべてのものを比較すると奇妙に複雑に見え始めます。私はEclipseのCounterClockWiseClojureプラグインに精通していませんが、EmacsのnREPL.elと同様の機能を提供すると確信しています。

于 2012-10-14T08:21:37.643 に答える
5

Leiningenのautoexpectプラグインを確認することをお勧めします。作業ディレクトリにファイルを保存するたびに、プラグインはコードをコンパイルして実行します。ボーナスとして、テストとして機能できる「期待される」関数呼び出しを評価します。これは、テスト駆動開発に非常に役立ち、他の回答で説明されているようにREPLを操作するための優れた賛辞です(テストケースの数に応じて、どちらか一方または両方を一緒に使用することがよくあります)。

JVMとLeiningenの起動コストのため、autoexpectの実行は「leintest」または「leinrun」を繰り返し実行するよりもはるかに高速であることに注意してください。

于 2012-10-14T14:23:28.390 に答える
3

あなたが探しているのはClojureKoanプラグインのようです。このワークシートスタイルの問題解決演習ツールは、編集内容を監視し、作業の正確性に関するフィードバックを即座に提供します。

実際の開発ワークフローについては、ここで他の人がツールとインタラクティブな環境のセットアップに関して提供したアドバイスを2番目に挙げますが、Clojureを学習していると具体的に言ったので、これは楽しいアプローチになる可能性があります。4Clojureと呼ばれるWebアプリケーションもあり、楽しく遊ぶことができます。

ただし、最終的には(またはすぐに)スムーズで便利な開発環境をセットアップしたいと思うでしょう。これまでのところ、いくつかの重要なツールについては言及されていません。ある人はNreplについて言及しました。Emacsが好きなら、スライム/スワンクのようなインタラクションモードがあります。これはnrepl.elと呼ばれるnreplに接続し、ファイルの編集とreplの操作を非常にうまく統合します。同様にVimClojureがあり、IntelliJ(LaClojure)とEclipse(Counterclockwise)のプラグインも人気があり、手入れが行き届いています。

誰かがautoexpectについて言及しました。良いTDDセットアップを探しているなら、midjeをお勧めします。leiningenの2.0プレビューリリースを使用している場合、 lazytestの統合が流動的であることにいくつかの問題があり、lazytest自体は非推奨であるか非推奨になるはずです。しかし、私は個人的には期待よりもmidjeを好みます。これらの問題は、lein-midjeの2.0リリースで確実に解決されます。非プレビュー(1.x)leiningenで動作するlein-midjeの安定バージョンには、lazytestを使用した自動テストのような機能があります。

于 2012-10-14T23:40:17.460 に答える
0

誰も言及していないように、筆記体は最近本当に素晴らしいですが、本格的なIDEに戻るのは悲しいことでした。組み込みのreplを使用してEmacsと同じことを簡単に行うことができます。作業している名前空間に移動し、変更を加えるたびに同期するだけです。それは本当に素晴らしい働き方です。

于 2015-06-25T12:33:45.600 に答える