such.imperfection
Were we perfect, we wouldn’t need to test or debug. Since we’re not, a few helpers organized around printing.
-pprint-
(-pprint- v)
Unlike regular pprint
, this returns the value passed in, making it useful for cases like this:
(-> v
frob
-pprint-
tweak
-pprint-)
value is used to produce more helpful function-names.
-prn-
(-prn- v)
Unlike regular prn
, this returns the value passed in, making it useful for cases like this:
(-> v
frob
-prn-
tweak
-prn-)
value is used to produce more helpful function-names.
-tag
(-tag value tag & args)
If tag
is a string, formats tag
and args
and prints the results as with println
. If tag
is not a string, it is printed and any args
are ignored. The value
is returned.
Use as follows:
(-> v
frob
(tag "Frob with %s" flag) (-pprint-)
quux
(tag :quux)
...)
e-pprint-
(e-pprint- & args)
Like -pprint-, but prints to *err*
. Useful for keeping debug output from being captured by val-and-output.
e-prn-
(e-prn- & args)
Like -prn-, but prints to *err*
. Useful for keeping debug output from being captured by val-and-output.
e-tag
(e-tag & args)
Like -tag, but prints to *err*
. Useful for keeping debug output from being captured by val-and-output.
epprint
(epprint & args)
Like pprint
, but prints to *err*
. Useful for keeping debug output from being captured by val-and-output.
epr
(epr & args)
Like pr
, but prints to *err*
. Useful for keeping debug output from being captured by val-and-output.
eprint
(eprint & args)
Like print
, but prints to *err*
. Useful for keeping debug output from being captured by val-and-output.
eprintln
(eprintln & args)
Like println
, but prints to *err*
. Useful for keeping debug output from being captured by val-and-output.
eprn
(eprn & args)
Like prn
, but prints to *err*
. Useful for keeping debug output from being captured by val-and-output.
etag-
(etag- & args)
Like tag-, but prints to *err*
. Useful for keeping debug output from being captured by val-and-output.
tag-
(tag- tag value)
Prints (as with println
) the given tag
, which may be any value. The value
is returned.
(->> v
frob
(tag "frobout") -prn-
...)
val-and-output
macro
(val-and-output & body)
Execute the body. Instead of just returning the resulting value, return a pair of the value
and any output (as with with-out-str
).