首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用plt-r5rs调用Geiser而不是球拍?

使用plt-r5rs调用Geiser而不是球拍?
EN

Stack Overflow用户
提问于 2016-12-15 19:32:17
回答 1查看 231关注 0票数 1

当使用Geiser和Emacs进行方案编程时,我如何设置Geiser在“球拍”模式下调用plt-r5rs遗留方案,或者可能是R6RS变体,而不是球拍?

我希望球拍在REPL中的R5RS (或者可能是R6RS)模式下工作,而不是在球拍模式下工作,因为球拍模式越来越偏离“标准”方案。

EN

回答 1

Stack Overflow用户

发布于 2017-01-25 10:55:26

将以下内容添加到您的geiser-racket-init-file

代码语言:javascript
复制
(require r5rs/init)

然后把这个建议放在你的Emacs初始化文件中的某个地方:

代码语言:javascript
复制
(defadvice run-racket (after enter-r5rs activate)
  (switch-to-geiser-module "r5rs"))

这应该会让你在Geiser中有一种R5RS式的体验。

编辑:

我最近不得不处理这个问题,发现我上面的回答是不够的。对于初学者来说,出于某种奇怪的原因,简单地将模块切换到r5rs并不会加载本应在该模块中的符号,例如set-car!set-cdr!。我发现使用geiser-repl-import-module比使用switch-to-geiser-module效果更好,因为它实际上会加载预期的符号,如set-car!set-cdr!等。此外,使用(geiser-repl-import-module "r5rs")的行为与在DrRacket中运行#lang r5rs的行为相匹配,所以它可能对大多数人来说已经足够了。但是,如果您仍然希望在Geiser中运行plt-r5rs可执行文件,则可以尝试执行以下操作:

代码语言:javascript
复制
(progn
  (flet ((geiser-racket--parameters () nil))
    (let ((geiser-racket-binary "plt-r5rs")
          (geiser-repl-skip-version-check-p t))
      (ignore-errors
        (run-geiser 'racket))
      ;; to keep your racket history from getting clobbered
      (setq-local geiser-repl-history-filename "~/.emacs.d/.plt-r5rs_history"))))

不幸的是,从这段代码中得到的REPL功能相当原始(例如,你不能自动完成符号)。这是因为我们删除了geiser-racket--parameters,因为这些参数与plt-r5rs和R5RS本身不兼容。通过执行C-u M-x run-scheme RET plt-r5rs,您将获得非常相似的功能和更少的卷积。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41163134

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档