/usr/local/lib/swipl/library/streams.pl
All Application Manual Name SummaryHelp

  • swipl
    • library
      • error.pl
      • debug.pl
      • apply.pl -- Apply predicates on a list
      • lists.pl -- List Manipulation
      • broadcast.pl -- Event service
      • shlib.pl
      • option.pl -- Option list processing
      • thread_pool.pl
      • gensym.pl
      • settings.pl
      • arithmetic.pl
      • main.pl
      • readutil.pl -- Read utilities
      • operators.pl -- Manage operators
      • pairs.pl -- Operations on key-value lists
      • prolog_source.pl
      • record.pl
      • quasi_quotations.pl
      • pure_input.pl -- Pure Input from files and streams
      • solution_sequences.pl
      • ordsets.pl
      • random.pl -- Random numbers
      • base64.pl -- Base64 encoding and decoding
      • aggregate.pl
      • yall.pl
      • sandbox.pl
      • apply_macros.pl -- Goal expansion rules to avoid meta-calling
      • assoc.pl -- Binary associations
      • prolog_format.pl
      • predicate_options.pl -- Access and analyse predicate options
      • csv.pl
      • pprint.pl -- Pretty Print Prolog terms
      • atom.pl -- Operations on atoms
      • modules.pl
      • occurs.pl
      • prolog_xref.pl -- Prolog cross-referencer data collection
      • prolog_colour.pl -- Prolog syntax colouring support.
      • lazy_lists.pl -- Lazy list handling
      • ugraphs.pl
      • url.pl -- Analysing and constructing URL
      • www_browser.pl
      • prolog_pack.pl
      • git.pl
      • rbtrees.pl -- Red black trees
      • dif.pl -- The dif/2 constraint
      • charsio.pl -- I/O on Lists of Character Codes
      • prolog_stack.pl -- Examine the Prolog stack
      • edinburgh.pl -- Some traditional Edinburgh predicates
      • prolog_clause.pl
      • prolog_breakpoints.pl
      • wfs.pl -- Well Founded Semantics interface
      • dialect.pl
      • prolog_code.pl -- Utilities for reasoning about code
      • sort.pl
      • iostream.pl -- Utilities to deal with streams
      • dicts.pl -- Dict utilities
      • varnumbers.pl
      • backcomp.pl -- Backward compatibility
      • listing.pl -- List programs and pretty print clauses
      • quintus.pl
      • base32.pl -- Base32 encoding and decoding
      • codesio.pl -- I/O on Lists of Character Codes
      • coinduction.pl
      • date.pl -- Process dates and times
      • heaps.pl
      • statistics.pl -- Get information about resource usage
      • terms.pl -- Term manipulation
      • utf8.pl
      • when.pl -- Conditional coroutining
      • tables.pl -- XSB interface to tables
      • persistency.pl
      • prolog_jiti.pl
      • ansi_term.pl
      • intercept.pl -- Intercept and signal interface
      • thread.pl -- High level thread primitives
      • prolog_versions.pl
      • prolog_profile.pl
      • prolog_coverage.pl
      • shell.pl -- Elementary shell commands
      • prolog_debug.pl
      • optparse.pl
      • fastrw.pl
      • hashtable.pl
      • portray_text.pl
      • rwlocks.pl
      • zip.pl
      • threadutil.pl -- Interactive thread utilities
      • check.pl
      • qsave.pl
      • prolog_codewalk.pl
      • prolog_metainference.pl -- Infer meta-predicate properties
      • nb_set.pl -- Non-backtrackable sets
      • streams.pl -- Manage Prolog streams
        • with_output_to/3
      • make.pl
      • prolog_trace.pl
      • explain.pl
      • system.pl -- System utilities
      • macros.pl -- Macro expansion
      • oset.pl
      • edit.pl
      • prolog_config.pl
      • strings.pl -- String utilities
      • ctypes.pl -- Character code classification
      • prolog_wrap.pl
      • increval.pl
      • writef.pl -- Old-style formatted write
      • files.pl
      • prolog_autoload.pl
 with_output_to(?Output, :Goal, +Options) is det
Run Goal and once/1 while capturing all output to all streams (current_output, user_output and user_error) in the string Output. Options processed:
capture(ListOfStreams)
List of streams to capture. Default is [], causing the predicate to call with_output_to/2. The only admissible list elements are the alias names for the Prolog standard streams. As current_output is always captured, the only two values are user_output and user_error
color(Boolean)
When true, pretend the output is a terminal, causing messages to use ANSI term escape sequences for color.

For example, the following captures an error message. Note that we must catch and print the message inside Goal. If we do not do so the exception of Goal is simply propagated into the environment without binding Output.

?- with_output_to(string(Out),
                  catch(A is log(-1), E, print_message(error, E)),
                  [capture([user_error]), color(true)]).
Out = "\u001B[1;31mERROR: is/2: Arithmetic: \c
       evaluation error: `undefined'\n\u001B[0m",
E = error(evaluation_error(undefined), context(system:(is)/2, _)).