fix broken links in README (#591)
This commit is contained in:
56
README.md
56
README.md
@@ -292,7 +292,7 @@ even if one exists.
|
|||||||
Scryer Prolog supports an alternative execution strategy which is
|
Scryer Prolog supports an alternative execution strategy which is
|
||||||
called *tabling* and also known as tabled execution and
|
called *tabling* and also known as tabled execution and
|
||||||
SLG resolution. To enable tabled execution for a predicate, use
|
SLG resolution. To enable tabled execution for a predicate, use
|
||||||
[`library(tabling)`](src/prolog/lib/tabling.pl) and add a `(table)/1`
|
[`library(tabling)`](src/lib/tabling.pl) and add a `(table)/1`
|
||||||
directive for the desired predicate indicator. For example, if we
|
directive for the desired predicate indicator. For example, if we
|
||||||
write:
|
write:
|
||||||
|
|
||||||
@@ -317,14 +317,14 @@ Scryer Prolog provides excellent support for Constraint Logic
|
|||||||
Programming (CLP), which is the amalgamation of
|
Programming (CLP), which is the amalgamation of
|
||||||
Logic Programming (LP) and Constraints.
|
Logic Programming (LP) and Constraints.
|
||||||
|
|
||||||
In addition to built-in support for [`dif/2`](src/prolog/lib/dif.pl),
|
In addition to built-in support for [`dif/2`](src/lib/dif.pl),
|
||||||
[`freeze/2`](src/prolog/lib/freeze.pl),
|
[`freeze/2`](src/lib/freeze.pl),
|
||||||
[CLP(B)](src/prolog/lib/clpb.pl) and [CLP(ℤ)](src/prolog/lib/clpz.pl),
|
[CLP(B)](src/lib/clpb.pl) and [CLP(ℤ)](src/lib/clpz.pl),
|
||||||
Scryer provides a convenient way to implement new user-defined
|
Scryer provides a convenient way to implement new user-defined
|
||||||
constraints: *Attributed variables* are available via
|
constraints: *Attributed variables* are available via
|
||||||
[`library(atts)`](src/prolog/lib/atts.pl) as in SICStus Prolog,
|
[`library(atts)`](src/lib/atts.pl) as in SICStus Prolog,
|
||||||
which is one of the most sophisticated and fastest constraint systems
|
which is one of the most sophisticated and fastest constraint systems
|
||||||
in existence. In [`library(iso_ext)`](src/prolog/lib/iso_ext.pl),
|
in existence. In [`library(iso_ext)`](src/lib/iso_ext.pl),
|
||||||
Scryer provides predicates for backtrackable (`bb_b_put/2`) and
|
Scryer provides predicates for backtrackable (`bb_b_put/2`) and
|
||||||
non-backtrackable (`bb_put/2`) global variables, which are needed to
|
non-backtrackable (`bb_put/2`) global variables, which are needed to
|
||||||
implement certain types of constraint solvers.
|
implement certain types of constraint solvers.
|
||||||
@@ -337,7 +337,7 @@ learning and developing portable CLP applications.
|
|||||||
Scryer has a simple predicate-based module system. It provides a
|
Scryer has a simple predicate-based module system. It provides a
|
||||||
way to separate units of code into distinct namespaces, for both
|
way to separate units of code into distinct namespaces, for both
|
||||||
predicates and operators. See the files
|
predicates and operators. See the files
|
||||||
[`src/prolog/lib/*.pl`](src/prolog/lib) for
|
[`src/lib/*.pl`](src/lib) for
|
||||||
examples.
|
examples.
|
||||||
|
|
||||||
At the time of this writing, many predicates reside in their own
|
At the time of this writing, many predicates reside in their own
|
||||||
@@ -345,31 +345,31 @@ modules that need to be imported before they can be used.
|
|||||||
The modules that ship with Scryer Prolog are also called
|
The modules that ship with Scryer Prolog are also called
|
||||||
*library* modules or *libraries*, and include:
|
*library* modules or *libraries*, and include:
|
||||||
|
|
||||||
* [`lists`](src/prolog/lib/lists.pl)
|
* [`lists`](src/lib/lists.pl)
|
||||||
providing `length/2`, `member/2`, `select/3`, `append/[2,3]`,
|
providing `length/2`, `member/2`, `select/3`, `append/[2,3]`,
|
||||||
`foldl/[4,5]`, `maplist/[2-9]`, `same_length/2`, `transpose/2` etc.
|
`foldl/[4,5]`, `maplist/[2-9]`, `same_length/2`, `transpose/2` etc.
|
||||||
* [`dcgs`](src/prolog/lib/dcgs.pl)
|
* [`dcgs`](src/lib/dcgs.pl)
|
||||||
Definite Clause Grammars (DCGs), a built-in grammar mechanism
|
Definite Clause Grammars (DCGs), a built-in grammar mechanism
|
||||||
that uses the operator `(-->)/2` to define grammar rules,
|
that uses the operator `(-->)/2` to define grammar rules,
|
||||||
and the predicates `phrase/[2,3]` to invoke them.
|
and the predicates `phrase/[2,3]` to invoke them.
|
||||||
* [`dif`](src/prolog/lib/dif.pl)
|
* [`dif`](src/lib/dif.pl)
|
||||||
The predicate `dif/2` provides declarative disequality:
|
The predicate `dif/2` provides declarative disequality:
|
||||||
It is true if and only if its arguments are different, and
|
It is true if and only if its arguments are different, and
|
||||||
delays the test until a sound decision can be made.
|
delays the test until a sound decision can be made.
|
||||||
* [`reif`](src/prolog/lib/reif.pl)
|
* [`reif`](src/lib/reif.pl)
|
||||||
providing `if_/3`, `tfilter/3` and related predicates
|
providing `if_/3`, `tfilter/3` and related predicates
|
||||||
as described in *Indexing dif/2*.
|
as described in *Indexing dif/2*.
|
||||||
* [`clpz`](src/prolog/lib/clpz.pl)
|
* [`clpz`](src/lib/clpz.pl)
|
||||||
CLP(ℤ): Constraint Logic Programming over Integers,
|
CLP(ℤ): Constraint Logic Programming over Integers,
|
||||||
providing declarative integer arithmetic via `(#=)/2`, `(#\=)/2`,
|
providing declarative integer arithmetic via `(#=)/2`, `(#\=)/2`,
|
||||||
`(#>=)/2` etc., and various global constraints and
|
`(#>=)/2` etc., and various global constraints and
|
||||||
enumeration predicates for solving combinatorial tasks.
|
enumeration predicates for solving combinatorial tasks.
|
||||||
* [`pairs`](src/prolog/lib/pairs.pl)
|
* [`pairs`](src/lib/pairs.pl)
|
||||||
By convention, *pairs* are Prolog terms with
|
By convention, *pairs* are Prolog terms with
|
||||||
principal functor `(-)/2`, written as `Key-Value`.
|
principal functor `(-)/2`, written as `Key-Value`.
|
||||||
This library provides `pairs_keys_values/3`,
|
This library provides `pairs_keys_values/3`,
|
||||||
`pairs_keys/2`, and other predicates to reason about pairs.
|
`pairs_keys/2`, and other predicates to reason about pairs.
|
||||||
* [`si`](src/prolog/lib/si.pl)
|
* [`si`](src/lib/si.pl)
|
||||||
The predicates `atom_si/1`, `integer_si/1`, `atomic_si/1`
|
The predicates `atom_si/1`, `integer_si/1`, `atomic_si/1`
|
||||||
and `list_si/1` implement sound type checks. They raise
|
and `list_si/1` implement sound type checks. They raise
|
||||||
instantiation errors if no decision can be made.
|
instantiation errors if no decision can be made.
|
||||||
@@ -378,53 +378,53 @@ The modules that ship with Scryer Prolog are also called
|
|||||||
write `integer_si(X)` to ensure soundness of your programs.
|
write `integer_si(X)` to ensure soundness of your programs.
|
||||||
"si" stands for *sufficiently instantiated*, and also for
|
"si" stands for *sufficiently instantiated*, and also for
|
||||||
*sound inference*.
|
*sound inference*.
|
||||||
* [`pio`](src/prolog/lib/pio.pl)
|
* [`pio`](src/lib/pio.pl)
|
||||||
`phrase_from_file/2` applies a DCG nonterminal to the contents of a
|
`phrase_from_file/2` applies a DCG nonterminal to the contents of a
|
||||||
file, reading lazily only as much as is needed. Due to the compact
|
file, reading lazily only as much as is needed. Due to the compact
|
||||||
internal string representation, also extremely large files can be
|
internal string representation, also extremely large files can be
|
||||||
efficiently processed with Scryer Prolog in this way.
|
efficiently processed with Scryer Prolog in this way.
|
||||||
* [`charsio`](src/prolog/lib/charsio.pl) Various predicates that are
|
* [`charsio`](src/lib/charsio.pl) Various predicates that are
|
||||||
useful for parsing and reasoning about characters, notably
|
useful for parsing and reasoning about characters, notably
|
||||||
`char_type/2` to classify characters according to their type.
|
`char_type/2` to classify characters according to their type.
|
||||||
* [`error`](src/prolog/lib/error.pl)
|
* [`error`](src/lib/error.pl)
|
||||||
`must_be/2` and `can_be/2` complement the type checks provided
|
`must_be/2` and `can_be/2` complement the type checks provided
|
||||||
by `library(si)`, and are especially useful for Prolog library
|
by `library(si)`, and are especially useful for Prolog library
|
||||||
authors.
|
authors.
|
||||||
* [`tabling`](src/prolog/lib/tabling.pl)
|
* [`tabling`](src/lib/tabling.pl)
|
||||||
The operator `(table)/1` is used in directives that prepare
|
The operator `(table)/1` is used in directives that prepare
|
||||||
predicates for tabled execution (SLG resolution).
|
predicates for tabled execution (SLG resolution).
|
||||||
* [`format`](src/prolog/lib/format.pl)
|
* [`format`](src/lib/format.pl)
|
||||||
The nonterminal `format_//2` is used to describe formatted output,
|
The nonterminal `format_//2` is used to describe formatted output,
|
||||||
arranging arguments according to a given format string.
|
arranging arguments according to a given format string.
|
||||||
The predicates `format/[2,3]`, `portray_clause/1` and `listing/1`
|
The predicates `format/[2,3]`, `portray_clause/1` and `listing/1`
|
||||||
provide formatted *impure* output.
|
provide formatted *impure* output.
|
||||||
* [`assoc`](src/prolog/lib/assoc.pl)
|
* [`assoc`](src/lib/assoc.pl)
|
||||||
providing `empty_assoc/1`, `get_assoc/3`, `put_assoc/4` etc.
|
providing `empty_assoc/1`, `get_assoc/3`, `put_assoc/4` etc.
|
||||||
to manage elements in AVL trees which ensure
|
to manage elements in AVL trees which ensure
|
||||||
*O*(log(*N*)) access.
|
*O*(log(*N*)) access.
|
||||||
* [`ordsets`](src/prolog/lib/ordsets.pl)
|
* [`ordsets`](src/lib/ordsets.pl)
|
||||||
represents ordered sets as lists.
|
represents ordered sets as lists.
|
||||||
* [`clpb`](src/prolog/lib/clpb.pl)
|
* [`clpb`](src/lib/clpb.pl)
|
||||||
CLP(B): Constraint Logic Programming over Boolean variables,
|
CLP(B): Constraint Logic Programming over Boolean variables,
|
||||||
a BDD-based SAT solver provided via the predicates
|
a BDD-based SAT solver provided via the predicates
|
||||||
`sat/1`, `taut/2`, `labeling/1` etc.
|
`sat/1`, `taut/2`, `labeling/1` etc.
|
||||||
* [`arithmetic`](src/prolog/lib/arithmetic.pl)
|
* [`arithmetic`](src/lib/arithmetic.pl)
|
||||||
Arithmetic predicates such as `lsb/2`, `msb/2` and
|
Arithmetic predicates such as `lsb/2`, `msb/2` and
|
||||||
`number_to_rational/2`.
|
`number_to_rational/2`.
|
||||||
* [`time`](src/prolog/lib/time.pl) Predicates for reasoning about
|
* [`time`](src/lib/time.pl) Predicates for reasoning about
|
||||||
time, including `time/1` to measure the CPU time of a goal,
|
time, including `time/1` to measure the CPU time of a goal,
|
||||||
`current_time/1` to obtain the current system time, the nonterminal
|
`current_time/1` to obtain the current system time, the nonterminal
|
||||||
`format_time//2` to describe strings with dates and times, and
|
`format_time//2` to describe strings with dates and times, and
|
||||||
`sleep/1` to slow down a computation.
|
`sleep/1` to slow down a computation.
|
||||||
* [`cont`](src/prolog/lib/cont.pl)
|
* [`cont`](src/lib/cont.pl)
|
||||||
Provides *delimited continuations* via `reset/3` and `shift/1`.
|
Provides *delimited continuations* via `reset/3` and `shift/1`.
|
||||||
* [`random`](src/prolog/lib/random.pl)
|
* [`random`](src/lib/random.pl)
|
||||||
Probabilistic predicates and random number generators.
|
Probabilistic predicates and random number generators.
|
||||||
* [`sockets`](src/prolog/lib/sockets.pl)
|
* [`sockets`](src/lib/sockets.pl)
|
||||||
Predicates for opening and accepting TCP connections as streams.
|
Predicates for opening and accepting TCP connections as streams.
|
||||||
TLS negotiation is performed via the option `tls(true)` in
|
TLS negotiation is performed via the option `tls(true)` in
|
||||||
`socket_client_open/3`, yielding secure encrypted connections.
|
`socket_client_open/3`, yielding secure encrypted connections.
|
||||||
* [`crypto`](src/prolog/lib/crypto.pl)
|
* [`crypto`](src/lib/crypto.pl)
|
||||||
Cryptographically secure random numbers and hashes, HMAC-based
|
Cryptographically secure random numbers and hashes, HMAC-based
|
||||||
key derivation (HKDF), password-based key derivation (PBKDF2),
|
key derivation (HKDF), password-based key derivation (PBKDF2),
|
||||||
public key signatures and signature verification with Ed25519,
|
public key signatures and signature verification with Ed25519,
|
||||||
|
|||||||
Reference in New Issue
Block a user