Path: ...!Xl.tags.giganews.com!local-4.nntp.ord.giganews.com!news.giganews.com.POSTED!not-for-mail NNTP-Posting-Date: Sun, 11 Aug 2024 22:51:03 +0000 From: steve g Newsgroups: comp.lang.lisp Subject: Re: Descending References: Date: Sun, 11 Aug 2024 18:51:03 -0400 Message-ID: <87ed6u3c88.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Cancel-Lock: sha1:yyuPsJPiUqfzcq/tZH6ZuwAA0kY= MIME-Version: 1.0 Content-Type: text/plain Lines: 62 X-Usenet-Provider: http://www.giganews.com X-Trace: sv3-xfPO5O/ckDAuHnXzJayKhqtiUWgpF9citucllbPY4Sjh2Q1xp6z+Q7ngxhwoQLl3W86wzbPTPrxHj+t!vazjIAc7RDgyMjkAtNQ0lhOYKo/3mYCwJgNIcl0NOFx+74w= X-Complaints-To: abuse@giganews.com X-DMCA-Notifications: http://www.giganews.com/info/dmca.html X-Abuse-and-DMCA-Info: Please be sure to forward a copy of ALL headers X-Abuse-and-DMCA-Info: Otherwise we will be unable to process your complaint properly X-Postfilter: 1.3.40 Bytes: 2590 HenHanna writes: > On 6/7/2024 3:57 AM, B. Pym wrote: < > Ken Tilton wrote: < > < >>> I am having trouble coding a list traversal segment. < >>> eg list: < >>> < >>> (a (b) (c (e (h i)) (f (j))) (d (g))) < >>> < >>> I want to traverse this list in "preorder" and get the following < >>> output: < >>> < >>> a b c e h i f j d g < >>> < >>> anyone have a code segment to this? < >>> < >>> thanks.... < >>> < >>> Chris. > > < >> < >> Will this work?: < >> < >> (defun dump (list-or-atom) < >> (if (listp list-or-atom) < >> (dolist (loa list-or-atom) < >> (dump loa)) < >> (format t "~s " list-or-atom))) < > Gauche Scheme: < > (define (dump list-or-atom) < > (cond ((null? list-or-atom) ) < > ((list? list-or-atom) < > (begin < > (dump (car list-or-atom)) < > (dump (cdr list-or-atom)))) < > (#t (format #t ":~s " list-or-atom)))) < > (dump '(a (b) (c (e (h i)) (f (j))) (d (g)))) < > ===> < > :a :b :c :e :h :i :f :j :d :g #t < > > > (i've added some spaces) > > the good ol' Flatten ? I actually found a reason to use flatten; PDIS systems for rule names! (defun flatten (l &optional res) (if (consp l) (flatten (car l) (flatten (cdr l) res)) (cons l res))) (defun generate-flattened-rule-name (pattern) "Transform list into a readable name. Ex (on ?x ? ?y ?z) => ON-?X-?-?Y-?Z ." (mapconcat #'symbol-name (flatten pattern) "-")) etc...