如何在emacs中快速编写方案程序

时间:2011-10-04 15:47:50

标签: emacs scheme racket

(define (cube guess x)
    (if (good-enough? guess x)
     guess
     (improve guess x)))

我正在使用emacs + Racket,但是当我在Racket中编写时,它不会自动完成。 我也不能在同一行写反支架,就像这样 (define (cube guess x) )。我想使用'return'键使反括号成为下一行,但是方案解释器会计算表达式,然后就会出错。

那么如果我们在方案模式缓冲区中编写代码,可能会有些麻烦,我们必须这样做 选择区域,然后在另一个缓冲区中计算

有人告诉我一些更好的方法吗?抱歉我的英语不好!

3 个答案:

答案 0 :(得分:3)

在我看来,您正在使用交互式解释器,当您在一行中间点击“返回”键时,它会发送要评估的表达式,而不是允许您进一步编辑它。它是否正确?如果是这样,我建议你看看Neil Van Dyke的“Quack”软件包,它(IIRC)旨在让你使用emacs编辑Racket代码。

如果您没有与emacs结婚,那么我当然也建议您尝试使用DrRacket。

答案 1 :(得分:1)

听起来你正在使用Emacs中的方案解释器。这是编写小函数的良好开端,但您确实希望使用REPL(读取 - 评估 - 打印循环)工作流程。值得庆幸的是,Emacs内置了一个现成的方案REPL,并且已在其他地方提到,还有其他模式(如Quack)可以增强体验。

在REPL模型中,如果要试用它们,可以在解释器中自由键入表达式,但是大部分编码应该在您正在编写的文件中进行。在该缓冲区内,如果您有一个运行方案解释器(M-x run-scheme),那么您可以将sexps发送给解释器进行评估,而无需使用C-c C-e手动复制。你可以用C-M-x做同样的事情。

您可以使用C-c C-k编译整个文件,如果您想要一起发送多个表达式,请在区域中抓取它们并使用C-c C-r将该区域发送给解释器。

还有其他一些命令可以轻松地将代码转移到解释器;您可以通过按C-h m来描述当前模式的键绑定,在REPL会话中阅读有关它们的更多信息。

答案 2 :(得分:-1)

这段代码甚至做了什么?你错过了“如果”吗?这可能是翻译不工作的部分原因。?

(如果(足够好?猜测x)猜测(改进猜测x))

很抱歉,如果我不明白你想要达到的目的。