我正在尝试学习Lisp,并通过书籍《Practical Common Lisp》(网址:http://www.gigamonkeys.com/book/)进行学习。
是否有一种命令可以以可读的方式打印先前在REPL中定义的函数? 我已经尝试过:
(print #'function-name)
但是这样会导致输出被包含在
#<>
中,无法读回(如果*print-readably
*
设置为T
,那么只会得到一个错误)。使用princ
或prin1
代替print
也会得到相同的结果。我有点惊讶,这并不容易找到。 Lisp 中的一些文章鼓励在 REPL 上进行实验,但如果您不能在输入函数后保存它们,那么您就不得不在输入之前将它们写入单独的文件中,这在某种程度上削弱了其优点。
function-lambda-expression
需要一个函数,而不是一个符号。因此,如果可用,(function-lambda-expression #'foo)
保证可以给出foo
的 lambda 表达式。对于某些实现来说,使用符号调用function-lambda-expression
可能没有问题,但对于其他一些实现可能不起作用。例如,在 CMUCL 和 SBCL 中,它确实需要一个函数。 - Frank Zalkow