Hatena::Groupcadr

わだばLisperになる このページをアンテナに追加 RSSフィード

2004 | 12 |
2005 | 01 | 02 | 07 | 10 | 11 |
2006 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2011 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 11 |

2011-01-03

C.I.CLを眺める(4) MAKE-CIRCULAR-LIST

| 01:50 | C.I.CLを眺める(4) MAKE-CIRCULAR-LIST - わだばLisperになる を含むブックマーク はてなブックマーク - C.I.CLを眺める(4) MAKE-CIRCULAR-LIST - わだばLisperになる

今回は、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#)

というところ