Major Section: PROGRAMMING
Example:
(cw "The goal is ~p0 and the alist is ~x1.~%" (untranslate term t nil) unify-subst)Logically, this expression is equivalent to
nil
. However, it has
the effect of first printing to the so-called ``comment window'' the
fmt
string as indicated. Thus, cw
is like fmt
(see fmt) except
in three important ways. First, it is a :
logic
mode function.
Second, it neither takes nor returns the ACL2 state
; logically cw
simply returns nil
, although it prints to a comment window that just
happens to share the terminal screen with the standard character
output *standard-co*
. Third, its fmt
args are positional
references, so that for example
(cw "Answers: ~p0 and ~p1" ans1 ans2)prints in the same manner as:
(fmt "Answers: ~p0 and ~p1" (list (cons #\0 ans1) (cons #\1 ans2)) *standard-co* state nil)Typically, calls of
cw
are embedded in prog2$
forms, e.g.,
(prog2$ (cw ...) (mv a b c))which has the side-effect of printing to the comment window and logically returning
(mv a b c)
.
General Form: (cw fmt-string arg1 arg2 ... argn)where n is between 0 and 9 (inclusive). The macro uses
fmt-to-comment-window
, passing it the column 0
and
evisc-tuple nil
, after assembling the appropriate alist binding the
fmt
vars #\0 through #\9; see fmt. If you want
(a) more than 10 vars, (b) vars other than the digit chars, (c) a different column, or (d) a different evisc-tuple,then call
fmt-to-comment-window
instead.