- Documentation
- Reference manual
- The SWI-Prolog library
- library(aggregate): Aggregation operators on backtrackable predicates
- library(apply): Apply predicates on a list
- library(assoc): Association lists
- library(broadcast): Broadcast and receive event notifications
- library(charsio): I/O on Lists of Character Codes
- library(check): Consistency checking
- library(clpb): CLP(B): Constraint Logic Programming over Boolean Variables
- library(clpfd): CLP(FD): Constraint Logic Programming over Finite Domains
- library(clpqr): Constraint Logic Programming over Rationals and Reals
- library(csv): Process CSV (Comma-Separated Values) data
- library(debug): Print debug messages and test assertions
- library(error): Error generating support
- library(gensym): Generate unique identifiers
- library(iostream): Utilities to deal with streams
- library(lists): List Manipulation
- library(main): Provide entry point for scripts
- library(nb_set): Non-backtrackable set
- library(www_browser): Activating your Web-browser
- library(option): Option list processing
- library(optparse): command line parsing
- library(ordsets): Ordered set manipulation
- library(pairs): Operations on key-value lists
- library(persistency): Provide persistent dynamic predicates
- library(pio): Pure I/O
- library(predicate_options): Declare option-processing of predicates
- library(prolog_pack): A package manager for Prolog
- library(prolog_xref): Cross-reference data collection library
- library(quasi_quotations): Define Quasi Quotation syntax
- library(random): Random numbers
- library(readutil): Reading lines, streams and files
- library(record): Access named fields in a term
- library(registry): Manipulating the Windows registry
- library(simplex): Solve linear programming problems
- library(solution_sequences): Modify solution sequences
- library(tabling): Tabled execution (SLG)
- library(thread_pool): Resource bounded thread management
- library(ugraphs): Unweighted Graphs
- library(url): Analysing and constructing URL
- library(varnumbers): Utilities for numbered terms
- library(yall): Lambda expressions
- The SWI-Prolog library
- Packages
- Reference manual
A.16 library(main): Provide entry point for scripts
- See also
- XPCE users should have a look at
library(pce_main)
, which starts the GUI and processes events until all windows have gone.
This library is intended for supporting PrologScript on Unix using
the
#!
magic sequence for scripts using commandline options.
The entry point main/0 calls
the user-supplied predicate main/1 passing
a list of commandline options. Below is `echo' in Prolog (adjust
/usr/bin/swipl to where SWI-Prolog is installed)
#!/usr/bin/env swipl :- initialization(main, main). main(Argv) :- echo(Argv). echo([]) :- nl. echo([Last]) :- !, write(Last), nl. echo([H|T]) :- write(H), write(' '), echo(T).
- main
- Call main/1 using the passed command-line
arguments. Before calling
main/1 this predicate installs a signal
handler for
SIGINT
(Control-C) that terminates the process with status 1. - [det]argv_options(+Argv, -RestArgv, -Options)
- Generic transformation of long commandline arguments to options. Each
--Name=Value is mapped to Name(Value). Each plain name is mapped to
Name(true), unless Name starts with
no-
, in which case the option is mapped to Name(false). Numeric option values are mapped to Prolog numbers.- See also
library(optparse)
provides a more involved option library, providing both short and long options, help and error handling. This predicate is more for quick-and-dirty scripts.