mirror of
				https://github.com/cookiengineer/audacity
				synced 2025-11-04 16:14:00 +01: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)
 | 
						|
; )
 |