cl-debug-print
cl-debug-print copied to clipboard
A reader-macro for debug print
- cl-debug-print
A reader macro package for debug printing.
** Install
When install by Roswell,
#+begin_src ros install masatoi/cl-debug-print #+end_src
** Usage
#+BEGIN_SRC lisp (ql:quickload :cl-debug-print) (debug-print:use-debug-print)
;;; Debug print
(defun fact (n) (if (= #>n 0) 1 (* n #>(fact (1- n)))))
(fact 10)
;; N => 10 ;; N => 9 ;; N => 8 ;; N => 7 ;; N => 6 ;; N => 5 ;; N => 4 ;; N => 3 ;; N => 2 ;; N => 1 ;; N => 0 ;; (FACT (1- N)) => 1 ;; (FACT (1- N)) => 1 ;; (FACT (1- N)) => 2 ;; (FACT (1- N)) => 6 ;; (FACT (1- N)) => 24 ;; (FACT (1- N)) => 120 ;; (FACT (1- N)) => 720 ;; (FACT (1- N)) => 5040 ;; (FACT (1- N)) => 40320 ;; (FACT (1- N)) => 362880
;;; Debug push
(defun fact2 (n) (if (= n 0) 1 (* n #!(fact2 (1- n)))))
(fact2 10) ;; => 3628800
;;; Debug push results are stored to dbg
cl-debug-print:dbg ;; => (362880 40320 5040 720 120 24 6 2 1 1)
;;; Clearing debug push list
(cl-debug-print:clear-dbg)
cl-debug-print:dbg ;; => nil #+END_SRC
*** Configure variables
#+begin_src lisp ;;; Setting destination stream (default value is standard-output)
(setf cl-debug-print:destination error-output)
;;; Setting for using DESCRIBE instead of mere value (default value is nil)
(setf cl-debug-print:use-describe t)
#>'sin
;; 'SIN => COMMON-LISP:SIN ;; [symbol] ;; ;; SIN names a compiled function: ;; Lambda-list: (NUMBER) ;; Declared type: (FUNCTION (NUMBER) ;; (VALUES ;; (OR (SINGLE-FLOAT -1.0 1.0) ;; (DOUBLE-FLOAT -1.0d0 1.0d0) ;; (COMPLEX SINGLE-FLOAT) (COMPLEX DOUBLE-FLOAT)) ;; &OPTIONAL)) ;; Derived type: (FUNCTION (T) ;; (VALUES ;; (OR (SINGLE-FLOAT -1.0 1.0) ;; (DOUBLE-FLOAT -1.0d0 1.0d0) ;; (COMPLEX DOUBLE-FLOAT) (COMPLEX SINGLE-FLOAT)) ;; &OPTIONAL)) ;; Documentation: ;; Return the sine of NUMBER. ;; Known attributes: foldable, flushable, unsafely-flushable, movable, recursive ;; Source file: SYS:SRC;CODE;IRRAT.LISP #+end_src