2013-10-04 118 views
0

是否有任何命令将所有随后的lisp命令都回显到stdout?echo lisp命令到标准输出

我正在寻找类似于bash -x的东西,但是对于一些lisp解释器(或者一些lisp特别是GNU Common Lisp)而言。

+0

你能澄清一下吗?当你说Lisp命令时,你的意思是你交互式地在REPL(read-eval-print-loop)输入的东西吗?这不是一个答案,但最后评估的表单存储在[variable'+'](http://www.lispworks.com/documentation/HyperSpec/Body/v_pl_plp.htm)中,这可能有助于实现此功能如果它不存在。 –

+0

现在是什么? GNU Common Lisp或CLISP?您在问题中提到了GNU Common Lisp,但是标记了CLISP(这是Common Lisp的另一个实现)的问题。 –

+0

您是否希望交互使用REPL,或者当您使用Lisp作为脚本语言?最后一项建议在[32.6.2。使用CLISP编写脚本](http://www.clisp.org/impnotes/quickstart.html#quickstart-unix)显示了一种脚本编写技术,可以打印每个输出值。您也许可以通过某种方式修改它以查看输入。 –

回答

1

如果您使用CLISP(ANSI Common Lisp的实现),请阅读手册页。有关ANSI Common Lisp的任何实现,请参阅*load-print*LOAD的文档。

0

Common Lisp是从猛砸一个非常不同的语言。它没有像Bash这样的“命令”。它有函数,宏和特殊的操作符。尽管所有Bash命令都是原子的(从当前Bash过程的角度来看),但在Lisp中,原始函数和特殊运算符只有这种情况。其他一切都是从更简单的部分建立起来的。

因此,直接等价于Bash的xtrace/-x功能在Lisp中没有任何意义。如果你写了你真正想要解决的问题,而不是只是要求一个非常具体的功能,那将会很有帮助。也许对您感兴趣的功能调用trace可能有帮助?

+0

如果一个实现碰巧提供钩子到它的REPL中,但是添加一些东西来打印当前要评估的表单将回答OP的问题。 (看一下CLISP源代码并不像CLISP有这样的钩子,但有些实现可能是这样的) –

+0

@JoshuaTaylor:Bash的'-x'选项的目的是提供一个完整的由一个脚本。 (当我交互使用shell时,我认为它没有什么用处)。我试着在我的回答中指出,这样的特性在Lisp中不会有帮助,因为它会让你深入到标准库的内部。原始表单通常不会被评估(例如,由于宏扩展和编译为本机代码)。因此我建议改为追踪感兴趣的特定功能。 –

+0

因为OP提到了bash -x,我认为OP正在用Lisp做一些脚本。例如,见[32.6.2。在CLISP手册中使用CLISP编写脚本](http://www.clisp.org/impnotes/quickstart.html#quickstart-unix)。重读这个问题虽然这个假设可能是不合理的。 –

相关问题