mirror of
https://github.com/cookiengineer/audacity
synced 2025-04-30 15:49:41 +02:00
31 lines
864 B
Common Lisp
31 lines
864 B
Common Lisp
; prints recursive list structure
|
|
|
|
;(let (seen-list)
|
|
(setf seenlist nil)
|
|
(defun seenp (l) (member l seenlist :test 'eq))
|
|
(defun make-seen (l) (setf seenlist (cons l seenlist)))
|
|
(defun printrec (l) (printrec-any l) (setf seenlist nil))
|
|
(defun printrec-any (l)
|
|
(cond ((atom l) (prin1 l) (princ " "))
|
|
((seenp l) (princ "<...> "))
|
|
(t
|
|
(make-seen l)
|
|
(princ "(")
|
|
(printrec-list l)
|
|
(princ ") ")))
|
|
nil)
|
|
(defun printrec-list (l)
|
|
(printrec-any (car l))
|
|
(cond ((cdr l)
|
|
(cond ((seenp (cdr l))
|
|
(princ "<...> "))
|
|
((atom (cdr l))
|
|
(princ ". ")
|
|
(prin1 (cdr l))
|
|
(princ " "))
|
|
(t
|
|
(make-seen (cdr l))
|
|
(printrec-list (cdr l))))))
|
|
nil)
|
|
; )
|