- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
Scheme新手问题-
有没有办法让我在不退出并重新启动我的 REPL 的情况下重置我当前的 REPL 环境(即默认用户环境)?基本上我想要一种方法来清除我当前的环境,这样我以前的定义都不会生效。这是使用 GNU/MIT 方案。
如果这是不可能的,那么在 REPL 中随意修改代码的最佳实践是什么?我听过人们谈论创建和删除包,但大多数示例似乎是针对 Common Lisp 的,这有点不同。
我确实在 Clojure REPL 中找到了有关如何执行此操作的信息,但有一些注意事项,而且它似乎是特定于 Clojure 的:Can I clean the repl?
谢谢!
编辑:通过退出并重新启动 REPL 进程本身,我能够在功能上完成相同的事情。我找到了一种方法来执行此操作,但使用 vim-screen 保持与我的编辑器 (vim) 的连接。如果无法从 REPL 中执行此操作,则这是一个可接受的解决方案。但是,我会让这个问题再开放一段时间,看看是否有一种方法可以在语言中做到这一点,因为我认为这会很有启发性。
最佳答案
我认为这是特定于实现的,但在 MIT Scheme 中,您可以使用以下方法清除 REPL 环境:
1 ]=> (ge (make-top-level-environment))
函数 (ge [environment])
“将当前 REP 循环环境更改为 [environment]。”和函数 make-top-level-environment
“返回一个新分配的顶级环境”。
MIT Scheme 有一堆环境管理函数,你可以仔细阅读 here
我在 Mac OS X (10.6.7) 上测试了这个,MIT Scheme 9.0.1 通过来自 GNU 站点的预构建二进制文件安装,使用以下 REPL session :
1 ]=> (define foo 1)
;Value: foo
1 ]=> foo
;Value: 1
1 ]=> (ge (make-top-level-environment))
;Value 13: #[environment 13]
1 ]=> foo
;Unbound variable: foo
;To continue, call RESTART with an option number:
; (RESTART 3) => Specify a value to use instead of foo.
; (RESTART 2) => Define foo to a given value.
; (RESTART 1) => Return to read-eval-print level 1.
2 error>
我认为不同的实现有不同的约定,但我认为没有什么能像 Common Lisp 的包那样。如果你不喜欢 MIT Scheme,你应该看看 Racket 和 Dr Racket,这是一个不错的 IDE,可能比命令行上的普通 REPL 更强大,我认为它有某种模块系统。 Racket 是它自己的 Scheme 方言,因此根据您正在做的事情,它可能不合适。 (Racket中的默认语言模块与MIT Scheme不一样)
最近(过去几个月)我一直在努力解决所有这些问题,当时我正在寻找一个可以在 Small Pieces 中运行 Lisp 代码的方案,它有一堆奇怪的宏。 Gambit 最终成为最好的选择。如果您没有这样的需求,请查看 Racket。
关于lisp - 可以在 Scheme REPL 中重置用户环境吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7074122/
我想在 Sublime Text 中创建一个快捷方式来执行以下操作: 如果 R 的 REPL 已打开,请将所选文本发送到此 REPL 否则在新窗口中打开 R REPL 并将文本发送到此 REPL。 我
和这里的一些提问者一样,我是 Lisp 的新手。我正在浏览 Practical Common Lisp书,但回过头来看看设置网络应用程序有多么容易,所以我一直在关注 this教程,以及 updated
我无法理解我不理解的复合“入门”示例。当我从 http://weavejester.github.com/compojure/docs/getting-started.html 运行示例时 ...我在
这个问题在这里已经有了答案: Running a Common Lisp function from a Terminal command prompt (4 个答案) 关闭 8 年前。 我正在尝试
我正在尝试使用 REPL 中给出的文本更改 Node 的 REPL 的提示。 我最初的尝试是这样的。 import repl from 'repl' let PROMPT = 'original >
我使用 Scala 语言已经有几个月了,并且已经在 Scala 中创建了几个项目。我发现 Scala REPL(至少是它的 IntelliJ 工作表实现)对于快速开发来说非常方便。我可以编写代码,看看
我进入正题。我已经安装了 SublimeText 3,我还通过 Package Control 安装了 SublimeREPL,我基本上已经根据需要进行了设置。 让我烦恼的主要事情是,每次我构建一个
我尝试使用相同的算法运行两个阶乘函数,一个在 Scala 中,另一个在 Clojure 中: // Scala: def factorial(n:Int) = (1 to n).foldLeft(1:
我开始喜欢 Scala REPL 使用 resX 引用以前计算的能力,并且想知道是否有一种方法可以在 Python/bpython/iPython REPL 中访问它。 最佳答案 默认的 python
我进入正题。我已经通过 Package Control 安装了 SublimeREPL,并且我已经按照我的需要进行了很多设置。 唯一困扰我的是,每次我构建 python 脚本 (CTRL+B) 时,都
定义完变量、函数等之后,你能不能把你在REPL上所做的也保存成一个文本.clj文件? 最佳答案 大多数人通过诸如广告 Eclipse/Emacs/vim 之类的编辑器使用 repl,并且该编辑器能够保
Scala REPL 非常适合尝试不同的代码片段。如果可以使用 Scala REPL 中的 Maven 存储库中的库运行代码,那就太好了。如何将远程 Maven 存储库添加到 Scala REPL 类
常规 Clojure 复制 clojure.main/repl接受类似 :print 的选项, :prompt和 :eval这让您可以连接并覆盖 repl 的行为。 例如。 (clojure.main
我正在开发我的第一个全栈 Clojure 应用程序。我已经设法让以下内容在 Linux Mint 中正常工作: 莱宁根 figwheel + garden[auto] = 使用热代码和 CSS 重新加
运行基本的 df.show() post spark notebook 安装 在 spark-notebook 上运行 scala - spark code 时出现以下错误。知道这种情况何时发生以及如
我一直在尝试 Javascript haskell-js库,但我偶然发现了 Coffeescript REPL 的奇怪行为。 使用节点,以下示例可以按预期工作: $ node require('has
在 Swift REPL 中,有什么方法可以保留 REPL 状态? 例如,我想在 REPL 中做一些工作,然后保存它,以便稍后加载。 这个概念可能被命名为保存/加载、暂停/恢复、快照/克隆、序列化/反
我正在尝试使用 REPL 来测试我的 java 代码。我已经设置了类路径并启动了 REPL,我可以在 REPL 中访问我的应用程序类。 我启动了一个进行 Web 服务调用的方法,它抛出了 java.l
嗨,我从 haskell 开始,并尝试设置我的 emacs 以进行开发。 我有 haskell-mod和 ghc-mod最新 emacs 24.3.1 . GHC 是 7.6.3 我创建了一个 has
我需要使用一个文档不足的 Java 库,如果有一种方法可以查看 REPL 中方法的签名(用于快速实验),它将对我有所帮助。考虑以下: user=> (import 'x.y.z.C) user=> (
我是一名优秀的程序员,十分优秀!