Common Lisp中是否可以禁用指定函数的返回值?

时间:2013-07-05 16:32:19

标签: common-lisp return-value sbcl

我想知道是否可以禁用指定函数的返回值。我正在使用编译器SBCL。我问这个,因为打印返回值需要一段时间,我甚至不需要它。有什么想法吗?

好的,它完成了这项工作:

(progn
  (...)
  t)

另外,感谢*print-length*

2 个答案:

答案 0 :(得分:3)

我发现通过在我的lisp启动文件中将*print-length*变量设置为相对较低的值来限制打印到我的回复的数据量是有用的,如下所示:

(setf *print-length* 20)

这样,我不必太担心返回大量元素的函数。

答案 1 :(得分:1)

使用函数values可以从函数返回零(或几个)值。 values返回它的所有参数。因此,具有(values)作为其最后形式的函数将不返回任何内容,而以(values val1 val2 val3)结尾的函数将返回三个值。当调用返回多个值的函数时,只有第一个(主要返回值)以正常方式可用,而其他可以使用例如multiple-value-bind有关详细信息,请参阅Hyperspec中Return Values部分

如果要限制无法修改的函数的输出,可以这样调用:

(progn
   (function-returning-much-data)
   (values))