![]() |
YAP 7.1.0
|
the library_directory path (set by the LIBDIR variable in the Makefile for YAP) Several files in the library are originally from the public-domain Edinburgh Prolog library
Modules | |
| Extension of arg/3 | |
| Association Maps | |
The following association list manipulation predicates are available once included with the use_module(library(assoc)) command. | |
| SWI-Like autoloader | |
| AVL Trees | |
| Supports constructing AVL trees. | |
| Backtrackable Hash Tables | |
| Block Diagram | |
| This library provides a way of visualizing a prolog program using modules with blocks. | |
| Concurrent Alarms | |
| This library provides a concurrent signals. | |
| Operations on Sequences of Codes. | |
| Term to sequence of codes conversion, mostly replaced by engine code. | |
| Clause Manipulation | |
| This library supports a number of useful utilities that come up over and over again when manipulating Prolog programs. | |
| Old Call Cleanup | |
% call_cleanup/1 and call_cleanup/2 allow predicates to register code for execution after the call is finished | |
| Co-Logic Programming | |
| Non-backtrackable queues in YAP. | |
| A library to implement queues of NB Terms. | |
| Memory Usage in Prolog Data-Base | |
| This library provides a set of utilities for studying memory usage in YAP. | |
| Directed Graphs | |
| The following graph manipulation routines use the red-black tree library to try to avoid linear-time scans of the graph for all graph operations. | |
| Exo Intervals | |
This package assumes you use exo-compilation, that is, that you loaded the pedicate using the exo option to load_files/2 , In this case, YAP includes a package for improved search on intervals of integers. | |
| Flag Manipulation in Prolog | |
| |
| Generate a new symbol. | |
| |
| Heaps | |
| A heap is a labelled binary tree where the key of each node is less than or equal to the keys of its sons. | |
| Tries for ILP | |
| MPI Interface | |
| This library provides a set of utilities for interfacing with LAM MPI. | |
| Line Manipulation Utilities | |
| This package provides a set of useful predicates to manipulate sequences of characters codes, usually first read in as a line. | |
| Apply a predicate to all arguments of a term | |
| Map List and Term Operations | |
| |
| MATLAB Package Interface | |
| The MathWorks MATLAB is a widely used package for array processing. | |
| Matrix Library | |
| This package provides a fast implementation of multi-dimensional matrices of integers and floats. | |
| Non-Backtrackable Data Structures | |
| The following routines implement well-known data-structures using global non-backtrackable variables (implemented on the Prolog stack) | |
| Ordered Sets | |
The following ordered set manipulation routines are available once included with the use_module(library(ordsets)) command. | |
| Automating test generation | |
| This library aims at facilitating test generation in a logic program, namely when interfacing to foreign code. | |
| Queues | |
The following queue manipulation routines are available once included with the use_module(library(queues)) command. | |
| Random Number Generator | |
| Since YAP-4.3.19 YAP uses the O'Keefe public-domain algorithm, based on the "Applied Statistics" algorithm AS183. | |
| Red-Black Trees | |
| Reading Lines and Files | |
| Read full lines and a full file in a single call. | |
| Regular Expressions | |
| This library includes routines to determine whether a regular expression matches part or all of a string. | |
| Range-List (RL) trees | |
| Splay Trees | |
| Splay trees are explained in the paper "Self-adjusting Binary Search
Trees", by D.D. | |
| Operating System Functionality | |
| Portable Interaction with the OS, be it Unix, Linux, OSX, or Windows. | |
| Utilities On Terms | |
| The next routines provide a set of commonly used utilities to manipulate terms. | |
| Calls With Timeout | |
The time_out/3 command relies on the alarm/3 built-in to implement a call with a maximum time of execution. | |
| Updatable Binary Trees | |
The following queue manipulation routines are available once included with the use_module(library(trees)) command. | |
| Trie DataStructure | |
| Engine Independent trie library. | |
| Unweighted Graphs | |
| The following graph manipulation routines are based in code originally written by Richard O'Keefe. | |
| Undirected Graphs | |
| The following graph manipulation routines use the red-black tree graph library to implement undirected graphs. | |
| Variabilize term. | |
| Weighted Directed Graphs | |
| Weighted Graphs | |
| Weighted Graph Processing Utilities. | |
| Weighted Undirected Graphs | |
| Yap PreProcessing | |
| Low-level access | |
| List Predicates in the Prolog Library | |
| SICStus compatible socket library | |
| uses SWI code | |
| class rannum/1 |
@groupdef prandom Van Gelder Random Number Generator
% % The following code produces the same random numbers as my previous ranpkg.pl, but is more accurately documented and slightly more efficient
ranpkg.pl random number package Allen Van Gelder, Stanford % rannum produces a random non-negative integer whose low bits are not all that random, so it should be scaled to a smaller range in general The integer is in the range 0 2^(w-1) - 1, where w is the word size available for integers, e.g., 18 for DEC-10, and 16 or 32 for VAX and most IBM % ranunif produces a uniformly distributed non-negative random integer over a caller-specified range If range is R, the result is in 0 R-1 % ranstart must be called before the first use of rannum or ranunif, and may be called later to redefine the seed ranstart/0 causes a built-in seed to be used ranstart(N), N an integer, varies this, but the same N always produces the same sequence of numbers % According to my reading of Knuth, Vol 2, this generator has period 2^(w-1) and potency w/2 , i.e., 8, 9, or 16 in practice Knuth says potency should be at least 5, so this looks more than adequate Its drawback is the lack of randomness of low-order bits
rannum(- I)
Produces a random non-negative integer I whose low bits are not all that random, so it should be scaled to a smaller range in general The integer I is in the range 0 2^(w-1) - 1 You can use:
to obtain a floating point number uniformly distributed between 0 and 1