Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!utgpu!water!watnot!watmath!clyde!rutgers!husc6!seismo!mcvax!unido!iaoobelix!wagner From: wagner@iaoobelix.UUCP Newsgroups: comp.lang.lisp Subject: Re: Circular Lists - (nf) Message-ID: <6900003@iaoobelix.UUCP> Date: Thu, 12-Mar-87 12:21:00 EST Article-I.D.: iaoobeli.6900003 Posted: Thu Mar 12 12:21:00 1987 Date-Received: Sun, 15-Mar-87 04:11:49 EST References: <2700001@uicsg.UUCP> Lines: 20 Nf-ID: #R:uicsg:2700001:iaoobelix:6900003:000:983 Nf-From: iaoobelix!wagner Mar 12 18:21:00 1987 /***** iaoobelix:comp.lang.lisp / uiucdcsp!forbus / 7:25 pm Mar 4, 1987*/ I think, there are two major applications of circular lists: 1. Infinite lists. Under some circumstances (map...) it is useful to have a list containing a periodic sequence of objects. This (circular) list can then be used e.g. in mapcar to apply a function to an infinite (but periodic) sequence of data objects. 2. Backpointers. (see also previous response) Imagine an object-oriented system or a semantic net where you need to have mutual references between objects (e.g. superclass-subclass, class-instance). Often, however, circular lists can be avoided (yet no circular structures) if you use symbols as placeholders for entry points into circular structures. You have to use this technique on e.g. with reference-counting GCs (cf. XEROX Interlisp-D). Juergen Wagner, (USENET) ...seismo!unido.uucp!iaoobel!wagner ("Gandalf") Fraunhofer Institute IAO, Stuttgart