<cl> (setq a '(defun reverse1 (x) (cond ((null x) nil) (t (append (reverse1 (cdr x)) (list (car x))))))) (DEFUN REVERSE1 (X) (COND ((NULL X) NIL) (T (APPEND (REVERSE1 #) (LIST #))))) <cl> (pprint a) (DEFUN REVERSE1 (X) (COND ((NULL X) NIL) (T (APPEND (REVERSE1 (CDR X)) (LIST (CAR X))))))表示されるリストの構造が深い場合に画面に表示しきれないことが 起こるため,その表示の深さレベルを変更したい場合がある Common Lispでは大域変数 *print-level*(デフォルトはnil)に レベル数を代入することで表示レベルを制御できる.
<cl> *print-level* NIL <cl> (setq *print-level* 4) 4 <cl> (pprint a) (DEFUN REVERSE1 (X) (COND ((NULL X) NIL) (T (APPEND # #))))レベルプリントを行なう表示関数は以下のように実現できる.
;;;level printpprint -> pretty print routine ;;; (defvar *lprint-depth* 2) (defvar *lprint-length* 7) ;;; (defun lprint (l depth) (cond ((atom l) (prin1 l)) ((> depth *lprint-depth*) (princ "...")) (t (princ "(") (let ((length 0) (depth (1+ depth))) (do () ((not (and l (< length *lprint-length*)))) (lprint (car l) depth) (and (setq l (cdr l)) (princ " ")) (setq length (1+ length))) (and l (prin1 '?))) (princ ")")))) (defun level-prin1 (l) (lprint l 1) (terpri))