A stoics.infrastructure prolog pack

This is a stoics infrastructure pack for SWI-Prolog that deals with predicate options. The main concept is to treat options as naive Prolog lists which the programmer can manipulate and specialise if they need to, while providing a number of basic predicates that manage basic common operations on options. Options are particularly important in the context of SWI packs, as making code publicly available to others often involves allowing for variations in the behaviour of the code.


In SWI It is highly recommended that you install from within by using its package manager.
To install simply do:


   ?- pack_install(options).

   And then load by:

   ?- use_module( library(options) ).

   To test 

   ?- [pack(options/examples/ex_sort)].

   ?- ex_sort( [a,b,e,c,b], Ord, true ).
   Ord = [a, b, c, e].
   ?- ex_sort( [a,b,e,c,b], Ord, debug(true) ).
   % Input list length: 5
   % Output list length: 4
   Ord = [a, b, c, e].
   ?- ex_sort( [a,b,e,c,b], Ord, order(>) ).
   Ord = [e, c, b, a].
   ?- ex_sort( [a,b,e,c,b], Ord, duplicates(true) ).
   Ord = [a, b, b, c, e].
   Create file $HOME/.pl/ with content

   ?- ex_sort( [a,b,e,c,b], Ord, true ). 
Ord = [e, c, b, a]. Default for user is now order(>) which can still be over-ridden at invocation
?- ex_sort( [a,b,e,c,b], Ord, order(<) ). Ord = [a, b, c, e].


module documentation: options.html
sources: options
github: stoics.infra


Nicos Angelopoulos
July, 2015 - Jan 2021