28

言語固有ではないREPLがあるかどうか知りたいです。私は REPL (主に Clojure、Scala、Haskell 用) に出入りすることに多くの時間を費やしていますが、バンドルされているものは多かれ少なかれ私を苛立たせています。REPL の仕事は、次の点で非常に一般的なようです。

  • 読む: ユーザー入力を受け取る
  • 評価: 処理のために入力をランタイムに渡します
  • 印刷: 結果を画面に出力します
  • ループ: 次のユーザー入力を待ちます

なぜ言語にとらわれない REPL があってはならないのかわかりませんが、そのようなものを見つけることができませんでした。私の理想的な REPL で私が望むいくつかのこと:

  • Linux コマンドライン アプリケーション
  • 上矢印からアクセスできる無限の履歴
  • 再実行する前に以前のコマンドを編集する機能
  • bashのような履歴検索用のctrl-r
  • 1 つの REPL に複数のセッションがあるため、それらを簡単に切り替えることができます

そしてもっと楽観的に

  • 構文の強調表示、コンテキストに応じたコード補完

これは存在しますか?

4

3 に答える 3

33

Bashはそれについて何も知りませんC-r:それはそれのためにそれを行うreadlineと上向き矢印の履歴を使用します。あなたが探しているREPLはreadlineのように聞こえますか?REPLのような振る舞いをしたいコマンドの前にrlwrapを付けるだけです(持っていない場合はインストールしてください-それは素晴らしいです)。

$ rlwrap java -jar clojure.jar
于 2011-04-12T18:12:00.777 に答える
5

Scala 2.9 REPL では、CTRL-R の逆検索がサポートされる予定です。ナイトリービルドにはすでにそれがあります。しばらくの間、コンテキストに応じたタブ補完がありました (ただし、改善される可能性があります)。

で scala をrlwrap使用する場合は、-Xnojlineフラグを使用します。

rlwrap scala -Xnojline

これにより、jline が rlwrap に干渉するのを防ぎます。次に、rlwrap は自由に readline を使用してカーソルの動きと履歴を実装できますが、それはインタープリターが行を確認する前であり、言語を認識した補完はありません

Scala REPL が改善されることを願っています。

  • 2.9 の一部であるプレゼンテーション コンパイラがあり、エラーの強調表示や補完などに使用されると思います。
  • scala 2.9 で使用される jline は、 jansiを活用して ansi 色を使用できます。

だから、いつの日か Scala REPL に IDE レベルの機能を持たせることを夢見ることができます。現実的には、かなりの労力が必要であり、これらの機能を追加することは、たとえばEclipseサポートを改善するよりも優先度が確実に低くなります...さらに、EclipseにREPLサポートを追加する方が理にかなっているかもしれません.

于 2011-04-13T03:37:37.580 に答える
2

厳密に言えばREPLではありませんが、Secoは、 JSR-223バインディングを使用して任意の言語の式を評価できるノートブックスタイルのシェルを提供します。この急速に成長しているリストには、Javascript、Scheme、Python、Ruby、Clojure、Groovy、Prologなどの言語が含まれています。

SecoのインスピレーションであるMathematicaノートブックのフロントエンドは、原則としてどの言語の式でも評価できますが、それを実現するには多少の作業が必要です。

于 2011-04-14T05:12:03.877 に答える