标签: read-eval-print-loop

我可以清理repl吗?

我在repl控制台中玩了很多代码,我该如何清除它?我想要一个新的,而不重新启动它.可以这样做吗?

clojure read-eval-print-loop

47
推荐指数
4
解决办法
2万
查看次数

如何在Scala REPL中重新加载类或包?

我几乎总是有一个或两个Scala REPL会话,这使得Java或Scala类很容易进行快速测试.但是,如果我更改一个类并重新编译它,REPL将继续加载旧的类.有没有办法让它重新加载类,而不是必须重新启动REPL?

举一个具体的例子,假设我们有Test.scala文件:

object Test { def hello = "Hello World" }
Run Code Online (Sandbox Code Playgroud)

我们编译它并启动REPL:

~/pkg/scala-2.8.0.Beta1-prerelease$ bin/scala
Welcome to Scala version 2.8.0.Beta1-prerelease
(Java HotSpot(TM) Server VM, Java 1.6.0_16).
Type in expressions to have them evaluated.
Type :help for more information.

scala> Test.hello
res0: java.lang.String = Hello World
Run Code Online (Sandbox Code Playgroud)

然后我们将源文件更改为

object Test {
  def hello = "Hello World"
  def goodbye = "Goodbye, Cruel World"
}
Run Code Online (Sandbox Code Playgroud)

但是我们不能用它:

scala> Test.goodbye
<console>:5: error: value goodbye is not a member of object Test
       Test.goodbye
            ^

scala> import Test; …
Run Code Online (Sandbox Code Playgroud)

scala read-eval-print-loop

44
推荐指数
4
解决办法
1万
查看次数

如何在Node REPL中编写多行代码

我想评价一下

var foo = "foo";
console.log(foo);
Run Code Online (Sandbox Code Playgroud)

作为一个块,而不是逐行评估

var foo = "foo";
undefined
console.log(foo);
foo
undefined
Run Code Online (Sandbox Code Playgroud)

有没有一种简单的方法将提示移动到下一行?

command-prompt node.js read-eval-print-loop node-repl

42
推荐指数
2
解决办法
2万
查看次数

如何调查对象/类型/等.来自Scala REPL?

我已经和Scala一起工作了一段时间,并且用它编写了10,000多行程序,但我仍然对一些内部工作感到困惑.我已经熟悉Java,C和Lisp后从Python来到Scala,但即使如此,它也很慢,而且一个巨大的问题是我在尝试研究对象/类型的内部工作时经常遇到的令人沮丧的困难/类/等.与Python相比,使用Scala REPL.在Python中,您可以查看任何对象foo(类型,全局变量中的对象,内置函数等),foo以查看事物的评估结果,type(foo)显示其类型,dir(foo)告诉您可以调用它的方法,以及help(foo)获取内置文档.你甚至可以做一些事情,比如help("re")查找名为re(包含正则表达式对象和方法)的包的文档,即使没有与之关联的对象.

在Scala中,您可以尝试在线阅读文档,查看库中的源代码等,但对于您不知道在哪里甚至是什么的事情来说,这通常很难(而且经常是这样的)一大块咬掉,考虑到庞大的类型层次) -东西在不同的地方(包左右浮动scala,Predef各种隐式转换,像符号::是几乎不可能谷歌).REPL应该是直接探索的方式,但实际上,事情更加神秘.说我看过foo某个地方的引用,但我不知道它是什么.显然没有"使用REPL系统地调查Scala事物的指南",但以下是经过大量试验和错误后我拼凑起来的内容:

  1. 如果foo是一个值(可能包括存储在变量中的内容以及伴随对象和其他Scala object),您可以foo直接进行评估.这应该告诉你结果的类型和价值.有时结果很有帮助,有时候不是.
  2. 如果foo是值,则可以使用它:type foo来获取其类型.(不一定具有启发性.)如果在函数调用中使用它,则可以获得返回值的类型,而无需调用函数.
  3. 如果foo是值,则可以使用它foo.getClass来获取其类.(通常比以前更有启发性,但对象的类与其类型有何不同?)
  4. 对于一个类foo,你可以使用classOf[foo],虽然结果的含义并不明显.
  5. 从理论上讲,你可以:javap foo用来反汇编一个类 - 它应该是最有用的类,但对我来说完全失败.
  6. 有时您必须从错误消息中将事物拼凑在一起.

使用失败的示例:javap:

scala> :javap List
Failed: Could not find class bytes for 'List'
Run Code Online (Sandbox Code Playgroud)

启发错误消息的示例:

scala> assert
<console>:8: error: ambiguous reference to overloaded definition, …
Run Code Online (Sandbox Code Playgroud)

scala exploratory read-eval-print-loop

41
推荐指数
2
解决办法
8476
查看次数

什么是javascript中的"REPL"?

我看到了创建"REPL"的参考.什么是REPL?

var arDrone = require('ar-drone');
var client  = arDrone.createClient();
client.createRepl();
Run Code Online (Sandbox Code Playgroud)

javascript node.js read-eval-print-loop

41
推荐指数
2
解决办法
1万
查看次数

Anders Hejlsberg的C#4.0 REPL

在Ander谈论C#的未来的最后10分钟里,他演示了一个非常酷的C#Read-Eval-Print循环,这将是学习语言的巨大帮助.

几个.NET4相关的下载已经可用:Visual Studio 2010和.NET Framework 4.0 CTP,Visual Studio 2010和.NET Framework 4 Training Kit.你知道这个REPL发生了什么吗?它是隐藏在例子中的某个地方吗?

我知道mono repl.请,没有替代解决方案.

c# read-eval-print-loop c#-4.0

40
推荐指数
2
解决办法
1万
查看次数

C编程有REPL吗?

我在osx上.我发现了这个 http://neugierig.org/software/c-repl/, 但该页面上的代码链接似乎已被破坏.

c read-eval-print-loop

39
推荐指数
3
解决办法
2万
查看次数

Clojure有彩色REPL吗?

我想为clojure代码获得一个彩色的REPL,类似于使用IRB for Ruby可以做的事情.

user.clj是否有任何提供REPL自动着色的库或设置?

示例IRB:

替代文字

syntax-highlighting colors clojure read-eval-print-loop

37
推荐指数
4
解决办法
7981
查看次数

Clojure:在REPL上加载依赖项

我最近学到了(感谢技术),在REPL ---

这失败了:

user=> (:require [clojure.set :as set])
java.lang.ClassNotFoundException: clojure.set (NO_SOURCE_FILE:24)
Run Code Online (Sandbox Code Playgroud)

虽然这成功了:

user=> (require '[clojure.set :as cs]) 
nil
Run Code Online (Sandbox Code Playgroud)

在加载clojure.set类时.

上下文:前一行是从命名空间源文件复制的.

我的主要问题是:通过交换:和'字符,我们所做的改变什么,现在允许后一个命令成功?

我的第二个问题是,一般来说 - 与在普通的clojure源文件中做事相比,REPL做事的准则是什么?这里假设我们可以从LEININGEN项目的根目录加载我们的repl,因此至少可以在依赖项子目录的磁盘上使用这些jar.

clojure read-eval-print-loop

36
推荐指数
2
解决办法
2万
查看次数

Clojure - '(撇号)和`(反叛)之间的区别

我对Clojure很新,我不确定我是否完全理解Clojure中撇号和反引号之间的区别.

(def x 5)

;; Question 1
(+ x x)  ;; evaluates to 10
'(+ x x) ;; evaluates to (+ x x)
`(+ x x) ;; evaluates to (clojure.core/+ user/x user/x)

;; Question 2
`(~+ ~x ~x) ;; evaluates to (#<core$_PLUS_ clojure.core$_PLUS_@32ee28a9> 5 5)
Run Code Online (Sandbox Code Playgroud)
  1. 如果我错了,请纠正我,但在我看来,撇号阻止所有符号(即+和x)解析为它们各自的var,而反引号允许符号解析为它们的var(但不评估值在var内.这准确吗?
  2. unquote符号(〜)到底在做什么?它是否将var评估为其实际值(即函数对象的+符号和数字对象的x符号)?如果你可以用Clojure的READ-COMPILE-EVAL阶段来解释这一点,那也会有所帮助.

clojure apostrophe backticks read-eval-print-loop

33
推荐指数
1
解决办法
5652
查看次数