ic.lisp 690 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. (in-package ic)
  2. ; CONFIGURATION
  3. (defvar *enabled* t)
  4. (defvar *prefix* "ic| ")
  5. (defvar *separator* " = ")
  6. (defvar *ic-out-stream* t)
  7. ; UTILS
  8. (defun to-string (exp)
  9. (format nil "~A" exp))
  10. ; ITNERFACE
  11. (defun ic-disable ()
  12. (setf *enabled* nil))
  13. (defun ic-enable ()
  14. (setf *enabled* t))
  15. (defmacro ic (exp)
  16. (with-gensyms (exp-str exp-val)
  17. `(if *enabled*
  18. (let ((,exp-str (to-string ',exp))
  19. (,exp-val ,exp))
  20. (format *ic-out-stream*
  21. "~%~A~A~A~A"
  22. *prefix*
  23. ,exp-str
  24. *separator*
  25. ,exp-val)
  26. ,exp-val)
  27. ,exp)))