小编wol*_*123的帖子

常见的lisp中的意外循环列表有问题

在Linux中运行sbcl 1.3.7,我有一个对象有一个有意为循环列表的插槽,遵循Rainer Joswig 在Common Lisp中的循环列表中的建议和一个旨在成为正确列表的全局变量(不打算是圆).

(setf *print-circle* t)

(defun circular (items)
   (setf (cdr (last items)) items)
   items)

(defclass circular ()
  ((items :accessor items :initarg :items)))

(defmethod initialize-instance :after ((c circular) &rest initargs)
   (setf (slot-value c 'items)
         (circular (slot-value c 'items))))

(defmethod next-item ((c circular))
  (prog1 (first (slot-value c 'items))
    (setf (slot-value c 'items)
          (rest (slot-value c 'items)))))

(defparameter *notes* (make-instance 'circular :items '(A A# B C C# D D# E F F# G G#)))

(defparameter *stuff1* '(A …
Run Code Online (Sandbox Code Playgroud)

common-lisp circular-list

1
推荐指数
1
解决办法
110
查看次数

标签 统计

circular-list ×1

common-lisp ×1