我口齿不清,碰到了一个不寻常的问题我想创建一个很长的列表;例如,类似于(setf *mat* (make-list 1000000)),但没有在屏幕上打印出100万次的Nil
我想到的最好的办法是。。。

(let () (setf *mat* (make-list 1000000)) (length *mat*))

(或者在闭包结束时其他一些简短但无用的函数)
…但我怀疑有更好的办法来避免这些sesquipedalian的打印输出欢迎任何意见顺便说一句,我在Windows 7下使用Clozure v1.10。

最佳答案

通常人们会在结束时调用(values)
Common Lisp可以在打印机级别处理长输出:

Welcome to Clozure Common Lisp Version 1.9-dev-r15612M-trunk  (DarwinX8664)!
? *print-length*
NIL
? (setf *print-length* 100)
100
? (make-list 1000000)
(NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL
 NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL
 NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL
 NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL
 NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL
 NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL
 NIL NIL NIL NIL ...)

*print-length*这是控制它的变量。

关于lisp - 避免Clozure Lisp(noob)中的回声,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30808270/

10-14 19:53