- swipl
- library
- error.pl
- debug.pl -- Print debug messages and test assertions
- apply.pl
- lists.pl
- broadcast.pl -- Event service
- shlib.pl -- Utility library for loading foreign objects (DLLs, shared objects)
- option.pl
- thread_pool.pl -- Resource bounded thread management
- gensym.pl
- settings.pl
- arithmetic.pl
- main.pl
- readutil.pl -- Read utilities
- operators.pl
- pairs.pl
- prolog_source.pl -- Examine Prolog source-files
- quasi_quotations.pl
- url.pl
- www_browser.pl
- prolog_colour.pl
- record.pl
- prolog_xref.pl -- Prolog cross-referencer data collection
- occurs.pl
- ordsets.pl -- Ordered set manipulation
- assoc.pl
- ugraphs.pl -- Graph manipulation library
- solution_sequences.pl -- Modify solution sequences
- atom.pl
- prolog_pack.pl
- git.pl -- Run GIT commands
- ctypes.pl
- utf8.pl
- base64.pl
- persistency.pl
- pure_input.pl
- nb_set.pl
- aggregate.pl
- csv.pl -- Process CSV (Comma-Separated Values) data
- iostream.pl -- Utilities to deal with streams
- dialect.pl
- apply_macros.pl -- Goal expansion rules to avoid meta-calling
- yall.pl
- prolog_code.pl -- Utilities for reasoning about code
- dif.pl -- The dif/2 constraint
- thread.pl -- High level thread primitives
- predicate_options.pl -- Access and analyse predicate options
- predicate_options/3
- assert_predicate_options/4
- current_option_arg/2
- current_predicate_option/3
- check_predicate_option/3
- current_predicate_options/3
- derived_predicate_options/3
- derived_predicate_options/1
- retractall_predicate_options/0
- check_predicate_options/0
- derive_predicate_options/0
- check_predicate_options/1
- check_raw_option_access/0
- check_raw_option_access/1
- rbtrees.pl
- nb_rbtrees.pl
- sandbox.pl
- prolog_format.pl -- Analyse format specifications
- random.pl
- pprint.pl -- Pretty Print Prolog terms
- modules.pl -- Module utility predicates
- lazy_lists.pl
- edinburgh.pl
- prolog_clause.pl
- prolog_breakpoints.pl -- Manage Prolog break-points
- dicts.pl
- heaps.pl
- backcomp.pl -- Backward compatibility
- date.pl
- prolog_profile.pl -- Execution profiler
- listing.pl -- List programs and pretty print clauses
- quintus.pl
- oset.pl
- varnumbers.pl
- tables.pl -- XSB interface to tables
- charsio.pl
- terms.pl -- Term manipulation
- make.pl
- streams.pl
- rwlocks.pl
- threadutil.pl -- Interactive thread utilities
- wfs.pl
- prolog_stack.pl -- Examine the Prolog stack
- check.pl -- Consistency checking
- intercept.pl -- Intercept and signal interface
- prolog_coverage.pl
- prolog_debug.pl -- User level debugging tools
- increval.pl
- help.pl -- Text based manual
- portray_text.pl
- statistics.pl -- Get information about resource usage
- optparse.pl
- ansi_term.pl
- hashtable.pl
- coinduction.pl
- qsave.pl
- zip.pl
- prolog_history.pl
- codesio.pl
- shell.pl
- when.pl -- Conditional coroutining
- system.pl -- System utilities
- prolog_jiti.pl
- prolog_codewalk.pl -- Prolog code walker
- exceptions.pl
- base32.pl
- sort.pl
- prolog_versions.pl
- edit.pl
- macros.pl -- Macro expansion
- prolog_autoload.pl
- writef.pl
- strings.pl
- tableutil.pl
- tty.pl
- prolog_config.pl
- explain.pl
- fastrw.pl
- prolog_trace.pl
- files.pl
- prolog_wrap.pl -- Wrapping predicates
- library
- check_raw_option_access is det
- check_raw_option_access(:Spec) is det
- Report order-sensitive option handling in the loaded program.
Unlike check_predicate_options/0, this is not part of check/0; it is
an opt-in linter intended for audits. It reports two patterns:
- Category A - raw option access
- A list known to be an option list (because it is a declared option argument or is passed to a predicate that processes options) is inspected using memberchk/2, member/2 or select/3 rather than option/2. Raw list search is order-agnostic and does not honour the Name=Value form, so it may disagree with option/2 (leftmost wins) semantics.
- Category B - override defeated by rightmost-wins
-
A partial list
[Opt,...|Tail]is passed to a predicate that resolves options with PL_scan_options() (rightmost wins, e.g. open/4). The prepended options look like an override but are defeated by a duplicate in Tail. Append the option or use merge_options/3 instead.
Spec is a module or a Module:Name/Arity.