一个REPL绑定他们所有?

Mat*_*ard 27 language-agnostic haskell scala clojure read-eval-print-loop

我想知道是否有一个不是特定于语言的REPL.我花了很多时间浸泡在REPL中(主要用于Clojure,Scala和Haskell),而捆绑的这些都让我或多或少地感到沮丧.似乎REPL的工作非常通用,因为它们:

  • 阅读:接受用户输入
  • 评估:将输入传递给某个运行时进行处理
  • 打印:将结果打印到屏幕上
  • 循环:等待下一个用户输入

我不明白为什么不应该有一些与语言无关的REPL,但我一直无法找到这样的东西.在我理想的REPL中我想要的一些东西:

  • Linux命令行应用程序
  • 通过向上箭头可访问无限历史记录
  • 能够在重新运行之前编辑以前的命令
  • 像bash这样的历史搜索的ctrl-r
  • 一个REPL中有多个会话,因此我可以轻松地在它们之间切换

而且更乐观

  • 语法突出显示,上下文感知代码完成

这存在吗?

ama*_*loy 32

Bash不知道任何事情C-r:它使用readline,它使用readline,以及向上箭头历史记录.听起来你正在寻找的REPL是readline吗?只需在rlwrap中输入你想要类似REPL的行为的命令(如果你没有它就安装它 - 它很棒),你应该好好去.

$ rlwrap java -jar clojure.jar
Run Code Online (Sandbox Code Playgroud)


huy*_*hjl 5

Scala 2.9 REPL将具有CTRL-R反向搜索支持.夜间建筑已经有了.一段时间内已经有了上下文感知标签完成(尽管可以改进).

使用scala时rlwrap,请使用-Xnojline标志:

rlwrap scala -Xnojline
Run Code Online (Sandbox Code Playgroud)

这可以防止jline干扰rlwrap.然后rlwrap可以自由地使用readline来实现光标运动和历史,但是在解释器看到该行之前,您将无法完成语言感知.

我希望Scala REPL能够得到改进.

  • 有一个演示编译器是2.9的一部分,我认为它用于突出显示错误和完成.
  • scala 2.9使用的jline能够使用ansi颜色来利用jansi

所以我可以梦想有一天我会在Scala REPL中拥有IDE级别的功能.实际上,它需要大量的努力,并且添加这些功能肯定比提高eclipse支持的优先级低......除此之外,在eclipse中添加REPL支持可能更有意义.