# \#printing

**URL:** https://swi-prolog.discourse.group/tag/printing/91.md

[Latest](https://swi-prolog.discourse.group/latest.md) · [Categories](https://swi-prolog.discourse.group/categories.md) · [Tags](https://swi-prolog.discourse.group/tags.md)

---

## [Unintuitive debug/3 - format/2 interaction](https://swi-prolog.discourse.group/t/unintuitive-debug-3-format-2-interaction/9715)

<div class="topic-metadata">

**Author:** [@Benji](https://swi-prolog.discourse.group/u/Benji)\
**Replies:** 7\
**Last updated:** [July 1, 2026, 7:58am UTC](https://swi-prolog.discourse.group/t/unintuitive-debug-3-format-2-interaction/9715 "2026-07-01T07:58:04Z")

</div>

I have reduced my confusion on the fillowing situation: run :- debug(foo), debug(foo, 'd1', \[\]), format('baz', \[\]), debug(foo, 'd2', \[\]), format('~n', \[\]), debug(foo, 'd1', \[\]), ansi\_fo…

---

## [Best practices for printing](https://swi-prolog.discourse.group/t/best-practices-for-printing/4231)

<div class="topic-metadata">

**Author:** [@Wiki](https://swi-prolog.discourse.group/u/Wiki)\
**Replies:** 4\
**Last updated:** [January 12, 2023, 9:34am UTC](https://swi-prolog.discourse.group/t/best-practices-for-printing/4231 "2023-01-12T09:34:32Z")

</div>

This is from a reply by Jan W. Best practice seems to be Use format/3 to emit non-term output. When writing a library, use the print\_message/2 indirection for talking to the user. Use writeq/1 or write\_canonical/1 to …
