• Places
    • Home
    • Graphs
    • Prefixes
  • Admin
    • Users
    • Settings
    • Plugins
    • Statistics
  • CPACK
    • Home
    • List packs
    • Submit pack
  • Repository
    • Load local file
    • Load from HTTP
    • Load from library
    • Remove triples
    • Clear repository
  • Query
    • YASGUI SPARQL Editor
    • Simple Form
    • SWISH Prolog shell
  • Help
    • Documentation
    • Tutorial
    • Roadmap
    • HTTP Services
  • Login

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

  • swipl
    • library
      • error.pl
      • debug.pl
      • apply.pl
      • lists.pl -- List Manipulation
      • broadcast.pl
      • shlib.pl -- Utility library for loading foreign objects (DLLs, shared objects)
      • option.pl
      • thread_pool.pl -- Resource bounded thread management
      • gensym.pl
      • settings.pl -- Setting management
      • arithmetic.pl -- Extensible arithmetic
      • main.pl
      • readutil.pl
      • operators.pl -- Manage operators
      • pairs.pl
      • prolog_source.pl -- Examine Prolog source-files
      • quasi_quotations.pl -- Define Quasi Quotation syntax
      • url.pl
      • www_browser.pl -- Open a URL in the users browser
      • prolog_colour.pl -- Prolog syntax colouring support.
      • record.pl -- Access compound arguments by name
      • prolog_xref.pl -- Prolog cross-referencer data collection
      • occurs.pl
      • ordsets.pl -- Ordered set manipulation
      • assoc.pl -- Binary associations
      • ugraphs.pl
      • solution_sequences.pl
      • atom.pl
      • prolog_pack.pl -- A package manager for Prolog
      • git.pl -- Run GIT commands
      • ctypes.pl -- Character code classification
      • utf8.pl
      • base64.pl
      • persistency.pl
      • pure_input.pl
      • nb_set.pl -- Non-backtrackable sets
      • aggregate.pl -- Aggregation operators on backtrackable predicates
      • csv.pl
      • iostream.pl -- Utilities to deal with streams
      • dialect.pl
      • apply_macros.pl -- Goal expansion rules to avoid meta-calling
      • yall.pl -- Lambda expressions
      • prolog_code.pl -- Utilities for reasoning about code
      • dif.pl -- The dif/2 constraint
      • thread.pl -- High level thread primitives
      • predicate_options.pl
      • rbtrees.pl
      • nb_rbtrees.pl -- Non-backtrackable operations on red black trees
      • sandbox.pl
      • prolog_format.pl
      • random.pl -- Random numbers
      • pprint.pl
      • modules.pl
      • lazy_lists.pl
      • edinburgh.pl
      • prolog_clause.pl
      • prolog_breakpoints.pl
      • dicts.pl
      • prolog_config.pl
      • shell.pl
      • backcomp.pl
      • charsio.pl -- I/O on Lists of Character Codes
      • base32.pl -- Base32 encoding and decoding
      • heaps.pl -- heaps/priority queues
      • prolog_debug.pl
      • date.pl -- Process dates and times
      • threadutil.pl -- Interactive thread utilities
      • terms.pl
      • edit.pl
      • make.pl -- Reload modified source files
      • wfs.pl -- Well Founded Semantics interface
      • check.pl -- Consistency checking
      • codesio.pl -- I/O on Lists of Character Codes
      • statistics.pl
      • coinduction.pl -- Co-Logic Programming
      • files.pl
      • strings.pl
      • tableutil.pl -- Table inspection and statistics utilities
      • increval.pl
      • tables.pl
      • hashtable.pl
      • help.pl -- Text based manual
      • prolog_trace.pl -- Print access to predicates
      • prolog_jiti.pl
      • intercept.pl -- Intercept and signal interface
        • intercept/3
        • intercept/4
        • intercept_all/4
        • nb_intercept_all/4
        • send_signal/1
        • send_silent_signal/1
      • listing.pl
      • macros.pl
      • optparse.pl
      • prolog_coverage.pl -- Coverage analysis tool
      • sort.pl
      • prolog_stack.pl -- Examine the Prolog stack
      • prolog_codewalk.pl -- Prolog code walker
      • prolog_profile.pl
      • quintus.pl
      • qsave.pl
      • zip.pl
      • prolog_autoload.pl -- Autoload all dependencies
      • ansi_term.pl -- Print decorated text to ANSI consoles
      • prolog_versions.pl -- Demand specific (Prolog) versions
      • varnumbers.pl -- Utilities for numbered terms
      • when.pl
      • system.pl
      • prolog_wrap.pl
      • prolog_qlfmake.pl -- Compile the library to QLF format
      • exceptions.pl
      • tty.pl
      • oset.pl
      • portray_text.pl -- Portray text
      • writef.pl
      • streams.pl -- Manage Prolog streams
      • fastrw.pl
      • explain.pl
      • prolog_history.pl
      • prolog_metainference.pl -- Infer meta-predicate properties
      • rwlocks.pl
 intercept(:Goal, ?Ball, :Handler)
Run Goal as call/1. If somewhere during the execution of Goal send_signal/1 is called with a Signal that unifies with Ball, run Handler and continue the execution.

This predicate is related to catch/3, but rather than aborting the execution of Goal and running Handler it continues the execution of Goal. This construct is also related to delimited continuations (see reset/3 and shift/1). It only covers one (common) use case for delimited continuations, but does so with a simpler interface, at lower overhead and without suffering from poor interaction with the cut.

Note that Ball and Handler are copied before calling the (copy) of Handler to avoid instantiation of Ball and/or Handler which can make a subsequent signal fail.

See also
- intercept/4, reset/3, catch/4, broadcast_request/1.
Compatibility
- Ciao
ClioPatria (version V3.1.1-59-g7b9a7a3)