C.I.CLを眺める(4) MAKE-CIRCULAR-LIST — #:g1

Posted 2011-01-02 16:50:00 GMT

今回は、C.I.CLのlist.lispから MAKE-CIRCULAR-LIST です。
前回の ENSURE-CIRCULAR との違いは、こちらの方はMAKE-LISTの様に新しくリストを指定した個数の要素で作成するというところです。

(defun make-circular-list (size &key initial-element)
  "
RETURN: a new circular list of length SIZE.
POST: (circular-length (make-circular-list size)) == (values size 0 size)
"
  (let ((list (make-list size :initial-element initial-element)))
    (setf (cdr (last list)) list)
    list))
動作は、
(import 'com.informatimago.common-lisp.list:make-circular-list)

(setq *print-circle* 'T) ;=> T (make-circular-list 5) ;=> #1=(NIL NIL NIL NIL NIL . #1#)

というところ

comments powered by Disqus