home *** CD-ROM | disk | FTP | other *** search
/ DOS/V Power Report 1999 April / VPR9904A.BIN / Vpr_data / Special / Yoolw101 / Yoolw101.lzh / PP.YO < prev    next >
Lisp/Scheme  |  1998-03-21  |  2KB  |  92 lines

  1. ;
  2. ;    整形プリント関数
  3. ;
  4. (de 'pp '(lambda(x)(prog()
  5.     (setq tabcount 0)
  6.     (ppmain x)
  7. )))
  8.  
  9. (de 'ppmain '(lambda(x)(prog(ppfirst)
  10.     (if (atom x)
  11.         (return (prog()
  12.             (princ x)
  13.             (return "")
  14.         ))
  15.     )
  16.     (princ "( ")
  17.     (setq ppfirst nil)
  18.     (loop(first)
  19.         (if (null x)
  20.             (return (prog()
  21.                 (princ ")")
  22.                 (return "")
  23.             ))
  24.         )
  25.         (setq first (car x))
  26.         (cond
  27.             ((listp first) (ppmain first))
  28.             ((null ppfirst)(prog()
  29.                 (princ first)
  30.                 (princ " ")
  31.                 (switch first
  32.                     (cond (prog()
  33.                         (shift (cdr x))
  34.                         (setq x nil)
  35.                     ))
  36.                     (if   (prog()
  37.                         (shift (cdr x))
  38.                         (setq x nil)
  39.                     ))
  40.                     (switch (prog()
  41.                         (princ (cadr x))
  42.                         (shift (cddr x))
  43.                         (setq x nil)
  44.                     ))
  45.                     (prog (prog()
  46.                         (princ (cadr x))
  47.                         (shift (cddr x))
  48.                         (setq x nil)
  49.                     ))
  50.                     (loop (prog()
  51.                         (princ (cadr x))
  52.                         (shift (cddr x))
  53.                         (setq x nil)
  54.                     ))
  55.                 )
  56.             ))
  57.             (t (prog()
  58.                 (princ first)
  59.                 (princ " ")
  60.             ))
  61.         )
  62.         (setq ppfirst t)
  63.         (if (not (null x)) (setq x (cdr x)))
  64.     )
  65. )))
  66.  
  67. (de 'shift '(lambda(x)(prog(cc)
  68.     (print "")
  69.     (setq tabcount (add1 tabcount))
  70.     (loop()
  71.         (if (null x)(return nil))
  72.         (printab)
  73.         (ppmain (car x))
  74.         (print "")
  75.         (setq x (cdr x))
  76.     )
  77.     (setq tabcount (sub1 tabcount))
  78.     (printab)
  79. )))
  80.  
  81. (de 'printab '(lambda()(prog(cc)
  82.     (setq cc tabcount)
  83.     (loop()
  84.         (if (zerop cc)(return nil))
  85.         (princ "  ")
  86.         (setq cc (sub1 cc))
  87.     )
  88. )))
  89. "           リスト整形プログラム"
  90. "(pp 整形したいリスト):入力されたリストデータを見やすくする。"
  91.  
  92.