修改Lisp函数而不重写它?

时间:2010-07-27 13:30:49

标签: lisp common-lisp

我之前写过一个有错误的Lisp函数。第一个挑战是弄清楚如何再次查看该功能。这个挑战已经解决了。现在我看到我做错了什么,我想修改已定义函数的内容而不重写整个事情?

看起来像Lisp一样聪明,有一种方法可以做到这一点,我只是不知道它是什么,因为我对这门语言很新。可以这样做吗?

3 个答案:

答案 0 :(得分:3)

从这个问题来看,我认为你有一个奇怪的设置。它似乎表明您正在直接在REPL上编写函数。不要那样做。

通常的设置是使用IDE(例如,带有Slime的Emacs)编辑源文件,然后将顶级表单(如函数定义)“发送”到REPL。

答案 1 :(得分:2)

每个有用的REPL都具有历史记录功能。它允许您向前和向后移动输入的历史记录。

当我在REPL中编写代码时,像m-p这样的简单按键可以找回更早的代码。有些IDE甚至可以使用m-在Lisp侦听器中查找源代码。

在大多数REPLS中,您还可以逐步向后搜索。

如果您想要输入日志,请使用功能DRIBBLE ..

还有一些选项,比如从函数中检索代码 - 当Lisp IDE支持时。

答案 2 :(得分:0)

许多Lisp中都有advice功能,可让您在现有功能之前或之后运行其他代码。但是评论是正确的,如果你还在学习和尝试,你为什么不重写一个函数呢?他们是否在编译周期中向您收费?