WITHOUT-EVISC.html -- ACL2 Version 6.3

## WITHOUT-EVISC

print output in full

    Major Section:  IO

    General Form:
    (without-evisc form)

where `form` is any expression to evaluate. The effect is to evaluate `form` as though the `without-evisc` wrapper were absent, except that expressions are printed in full for the ensuing output, regardless of the current evisc-tuples (see set-evisc-tuple). See set-iprint for an example.

More precisely, `without-evisc` binds each of the term-evisc-tuple, ld-evisc-tuple, abbrev-evisc-tuple and gag-mode-evisc-tuple to `nil` (see set-evisc-tuple). It does not modify the trace evisc-tuple, so trace output is not modified by `without-evisc`. Also note that calls of printing functions such as `fmt` that include explicit evisc-tuples will not have those evisc-tuples overridden. The following example illustrates this point.

    ACL2 !>(without-evisc
            (fms "~x0~%"
                 (list (cons #0 '((a b ((c d)) e f g) u v w x y)))
                 *standard-co*
                 state
                 (evisc-tuple 2 3 nil nil)))

    ((A B # ...) U V ...)
    <state>
    ACL2 !>

We conclude with two remarks. (1) A call of `without-evisc` on expression `exp` actually invokes a specialized call of `ld` on a one-element list containing `exp`, which prints the value returned by evaluation of `exp` but actually returns the useless value `(mv nil :invisible state)`. So do not use `without-evisc` in programs; just use it at the top level of the ACL2 read-eval-print loop, or at least the top level of `ld`. (2) Even when using without-evisc, if the ACL2 logical world is part of the value returned, it will be printed in abbreviated form because the ACL2 read-eval-print loop always arranges for this to be the case, regardless of the ld-evisc-tuple. For example:

    ACL2 !>(without-evisc (w state))
    <world>
    ACL2 !>

An alternative to the use of `without-evisc` is to explore large objects using the ACL2 function `(walkabout object state)`. Some brief documentation is printed when you enter an interactive loop upon evaluating a call of `walkabout`. We may add documentation for `walkabout` if that is requested.