Sysop: | Amessyroom |
---|---|
Location: | Fayetteville, NC |
Users: | 40 |
Nodes: | 6 (0 / 6) |
Uptime: | 11:20:25 |
Calls: | 291 |
Files: | 910 |
Messages: | 76,440 |
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 ?