(DE SPRINT (S COL) % Pretty-Print a symbolic expression , (PPAUX S COL 0 T) ,,,) (DE PPAUX (S-EXP S-EXP-START LP-COUNT NEWLINE) % Aux function for pretty-printin , (PROG (ARG-START) , , (COND (NEWLINE % do carriage return? , , , (TERPRI) , , ,,,)) , , (PRIN2 (FILLSTR " " % move out to starting place , , , (DIFFERENCE S-EXP-START (POSN)) , , ,,,)) , , (COND , , , ((ATOM S-EXP) % if S is an atom, print it , , , , (PRIN1 S-EXP) , , , ,,,) , , , ( % else, it's a list , , , , (LESSP % will it fit on this line? , , , , , (PLUS (POSN) (PRLENGTH S-EXP) LP-COUNT LP-COUNT) , , , , , (LINELENGTH) , , , , ,,,) , , , , , , , , (PRIN1 S-EXP) , , , ,,,) , , , ( T , , , , (PRIN2 "(") % start with left paren , , , , (SETQ LP-COUNT (ADD1 LP-COUNT)) , , , , (SETQ ARG-START (PLUS (POSN) 2)) , , , , (PPAUX (CAR S-EXP) (POSN) LP-COUNT NIL) % pretty-print first element , , , , (COND % more? , , , , , ((CDR S-EXP) , , , , , , (MAPCAR % and the rest , , , , , , , (CDR S-EXP) , , , , , , , '(LAMBDA (E) , , , , , , , , (PPAUX E ARG-START LP-COUNT T) % on new lines , , , , , , , ,,,) , , , , , , ,,,) , , , , , ,,,) , , , , ,,,) , , , , (PRIN2 ")") % end with right paren , , , , (SETQ LP-COUNT (SUB1 LP-COUNT)) , , , ,,,) , , ,,,) , , (RETURN) , ,,,) ,,,)