UNPKG

@ciao-lang/ts-ciao-interface

Version:

Simple Ciao interface for node.

60 lines 23 kB
<!DOCTYPE HTML><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><meta name="theme-color" content="#273f79"/><link rel="stylesheet" href="lpdoc.css" type="text/css"/><script type="text/javascript" src="lpdoc.js"></script><title>Operations on source trees &mdash; The Ciao System v1.22</title></head><body><div class="lpdoc-page fixleftbar"><a href="#" id="sidebar-toggle-button" class="lpdoc-navbutton"><span id="sidebar-button-arrow">&#9776;</span></a><div id="sidebar" class="lpdoc-sidebar"><div style="height: 40px; margin-left: auto; margin-right: auto"><img src="ciao-logo_autofig.png" width=auto height=100%></div><div class="lpdoc-nav"><span class="lpdoc-on-right"><a class="lpdoc-navbutton" href="ExtraLibs.html">&#x2191;</a><a class="lpdoc-navbutton" href="syntax_highlight.html">&#x2190;</a><a class="lpdoc-navbutton" href="version_strings.html">&#x2192;</a><a class="lpdoc-navbutton" href="ciaosearch.html">&#x1F50D;</a></span><span><a href="ciaofulltoc.html">TOC</a></span></div><hr></hr><ul class="lpdoc-itemize-sectpath"><li><a href="ciao.html">The Ciao System</a> &raquo;<br/> </li><li><a href="ExtraLibs.html">PART VIII - Additional libraries</a> &raquo;<br/> </li><li><a href=""><strong>Operations on source trees</strong></a></li></ul><hr></hr><em>ON THIS PAGE</em><ul><li><a href="#Details of the walk algorithm">Details of the walk algorithm</a></li><li><a href="#Efficiency and memory usage">Efficiency and memory usage</a></li><li><a href="#Examples">Examples</a></li><li><a href="#Usage and interface">Usage and interface</a></li><li><a href="#Documentation on exports">Documentation on exports</a></li><li><a href="#Documentation on imports">Documentation on imports</a></li></ul></div><div class="lpdoc-main"><div id=""><h1>Operations on source trees</h1><a class="lpdoc-idx-anchor" href="ciaosearch.html#source_tree"></a> <strong>Author(s):</strong> <a class="lpdoc-idx-anchor" id="Jose F. Morales" href="ciaosearch.html#Jose F. Morales">Jose F. Morales</a>, <a class="lpdoc-idx-anchor" id="The Ciao Development Team" href="ciaosearch.html#The Ciao Development Team">The Ciao Development Team</a>.<p> This module defines predicates to operate on directory trees containing source code (<a class="lpdoc-idx-anchor" id="0" href="ciaosearch.html#source trees">source trees</a>).<p>The possible operations include enumerating, copying, and cleaning files or selection of files based on filters. See <a class="lpdoc-idx-anchor" id="1" href="#source_filter/1"><tt>source_filter/1</tt></a> for a description of the available filters.<p><div id="Details of the walk algorithm"><h2>Details of the walk algorithm</h2> <p>The walk algorithm (see internal <a class="lpdoc-idx-anchor" id="2" href="ciaosearch.html#walk/3"><tt>walk/3</tt></a>) traverses a filtered directory structure and invokes actions (see internal <a class="lpdoc-idx-anchor" id="3" href="ciaosearch.html#action_hook/3"><tt>action_hook/3</tt></a>, <a class="lpdoc-idx-anchor" id="4" href="ciaosearch.html#walk_action/1"><tt>walk_action/1</tt></a>) parameterized by walk events (see internal <a class="lpdoc-idx-anchor" id="5" href="ciaosearch.html#walk_event/1"><tt>walk_event/1</tt></a>) before entering a directory (<tt>enter</tt> event), when a file is processed (<tt>file</tt> event), and once the files in a directory are processed (<tt>exit</tt> event).<p>Filters restrict the walk to selected parts of the file tree. Filters are decomposed into formulas of basic filters, where a basic filter is a property of a regular file or directory (e.g., based on its name or path).<p>A normalized filter (see internal <a class="lpdoc-idx-anchor" id="6" href="ciaosearch.html#norm_filter/2"><tt>norm_filter/2</tt></a>) is given by the tuple of formulas (<span class="lpdoc-var">WalkP</span>, <span class="lpdoc-var">DirP</span>, <span class="lpdoc-var">FileP</span>), where each component represents the following conditions for the walk algorithm:<p><dl> <dt><span class="lpdoc-var">WalkP</span><dd> walk into the directory <dt><span class="lpdoc-var">DirP</span><dd> treat directory files <dt><span class="lpdoc-var">FileP</span><dd> treat the file (a regular file or a directory not marked for walk) </dl> <p>Given a base directory, the walk algorithm will perform the following operation on each file <span class="lpdoc-var">F</span>:<p><pre class="lpdoc-codeblock"> if F is a directory and WalkP(F): if DirP(F): Action &apos;enter&apos; on F call recursively for each file in F Action &apos;exit&apos; on F else: if FileP(F): Action &apos;file&apos; on F </pre> <p></div><div id="Efficiency and memory usage"><h2>Efficiency and memory usage</h2> <p><ul> <li>Evaluation of filter checks is optimized to minimize accesses to the filesystem. <li>This code depends on the regular expression library, which is currently not optimized for performance. <li>Since file names are encoded as atoms, this code may suffer from exhaustion of the atom table on large file trees. </ul> <p></div><div id="Examples"><h2>Examples</h2> <p>Find cleanable files in the current directory (recursively): <pre class="lpdoc-codeblock"> ?- current_file_find([cleanable(src)], &apos;.&apos;, X). </pre> <p>Find distributable packages: <pre class="lpdoc-codeblock"> ?- current_file_find([proj(distributable), srctype(package)], &apos;.&apos;, X). </pre> </div><br/><div id="Usage and interface"><h2>Usage and interface</h2><div class="lpdoc-cartouche"><ul><li><strong>Library usage:</strong><br/><tt>:- use_module(library(source_tree)).</tt><li><strong>Exports:</strong><br/><ul class="lpdoc-itemize-minus"><li><em>Predicates:</em><br/><a class="lpdoc-idx-anchor" id="7" href="#current_file_find/3"><tt>current_file_find/3</tt></a>, <a class="lpdoc-idx-anchor" id="8" href="#copy_file_tree/4"><tt>copy_file_tree/4</tt></a>, <a class="lpdoc-idx-anchor" id="9" href="#copy_file_tree/5"><tt>copy_file_tree/5</tt></a>, <a class="lpdoc-idx-anchor" id="10" href="#clean_file_tree/2"><tt>clean_file_tree/2</tt></a>, <a class="lpdoc-idx-anchor" id="11" href="#copy_file_or_dir/2"><tt>copy_file_or_dir/2</tt></a>, <a class="lpdoc-idx-anchor" id="12" href="#remove_dir/1"><tt>remove_dir/1</tt></a>, <a class="lpdoc-idx-anchor" id="13" href="#remove_file_or_dir/1"><tt>remove_file_or_dir/1</tt></a>, <a class="lpdoc-idx-anchor" id="14" href="#delete_glob/2"><tt>delete_glob/2</tt></a>, <a class="lpdoc-idx-anchor" id="15" href="#remove_glob/2"><tt>remove_glob/2</tt></a>, <a class="lpdoc-idx-anchor" id="16" href="#match_def/3"><tt>match_def/3</tt></a>, <a class="lpdoc-idx-anchor" id="17" href="#get_file_srctype/2"><tt>get_file_srctype/2</tt></a>. <li><em>Regular Types:</em><br/><a class="lpdoc-idx-anchor" id="18" href="#source_filter/1"><tt>source_filter/1</tt></a>, <a class="lpdoc-idx-anchor" id="19" href="#precomp_level/1"><tt>precomp_level/1</tt></a>, <a class="lpdoc-idx-anchor" id="20" href="#file_srctype/1"><tt>file_srctype/1</tt></a>. </ul></ul></div></div><div id="Documentation on exports"><h2>Documentation on exports</h2><div><div class="lpdoc-defname"><span class="lpdoc-predtag">PREDICATE</span><a class="lpdoc-idx-anchor" id="current_file_find/3" href="ciaosearch.html#current_file_find/3">current_file_find/3</a></div><div class="lpdoc-deftext"><p><span class="lpdoc-usage-header">Usage:</span><span class="lpdoc-usage-decl"><tt>current_file_find(Filter,BaseDir,FileName)</tt> </span><p>Enumerates recursively all files <span class="lpdoc-var">FileName</span> (absolute file name) in <span class="lpdoc-var">BaseDir</span> directory files that match the corresponding <span class="lpdoc-var">Filter</span>.</p><ul class="lpdoc-itemize-minus"><li><em>Call and exit should be compatible with:</em><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="21" href="#source_filter/1"><tt>source_tree:source_filter/1</tt></a>)</span><span><span class="lpdoc-var">Filter</span> is a source file filter </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="22" href="basic_props.html#atm/1"><tt>basic_props:atm/1</tt></a>)</span><span><span class="lpdoc-var">BaseDir</span> is an atom. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="23" href="basic_props.html#atm/1"><tt>basic_props:atm/1</tt></a>)</span><span><span class="lpdoc-var">FileName</span> is an atom. </span> <li><em>The following properties should hold at call time:</em><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="24" href="term_typing.html#nonvar/1"><tt>term_typing:nonvar/1</tt></a>)</span><span><span class="lpdoc-var">Filter</span> is currently a term which is not a free variable. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="25" href="term_typing.html#nonvar/1"><tt>term_typing:nonvar/1</tt></a>)</span><span><span class="lpdoc-var">BaseDir</span> is currently a term which is not a free variable. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="26" href="term_typing.html#var/1"><tt>term_typing:var/1</tt></a>)</span><span><span class="lpdoc-var">FileName</span> is a free variable. </span> </ul></div></div><p> <div><div class="lpdoc-defname"><span class="lpdoc-predtag">PREDICATE</span><a class="lpdoc-idx-anchor" id="copy_file_tree/4" href="ciaosearch.html#copy_file_tree/4">copy_file_tree/4</a></div><div class="lpdoc-deftext"><p><span class="lpdoc-usage-header">Usage:</span><span class="lpdoc-usage-decl"><tt>copy_file_tree(Filter,SrcDir,DestDir,Perms)</tt> </span><p>Copy the file tree from <span class="lpdoc-var">SrcDir</span> to <span class="lpdoc-var">DestDir</span> with permissions <span class="lpdoc-var">Perms</span></p><ul class="lpdoc-itemize-minus"></ul></div></div><p> <div><div class="lpdoc-defname"><span class="lpdoc-predtag">PREDICATE</span><a class="lpdoc-idx-anchor" id="copy_file_tree/5" href="ciaosearch.html#copy_file_tree/5">copy_file_tree/5</a></div><div class="lpdoc-deftext"><p><span class="lpdoc-usage-header">Usage:</span><span class="lpdoc-usage-decl"><tt>copy_file_tree(Filter,SrcDir,DestDir,Perms,Owner)</tt> </span><p>Copy the file tree from <span class="lpdoc-var">SrcDir</span> to <span class="lpdoc-var">DestDir</span> with permissions <span class="lpdoc-var">Perms</span> and owner <span class="lpdoc-var">Owner</span></p><ul class="lpdoc-itemize-minus"></ul></div></div><p> <div><div class="lpdoc-defname"><span class="lpdoc-predtag">PREDICATE</span><a class="lpdoc-idx-anchor" id="clean_file_tree/2" href="ciaosearch.html#clean_file_tree/2">clean_file_tree/2</a></div><div class="lpdoc-deftext"><p><span class="lpdoc-usage-header">Usage:</span><span class="lpdoc-usage-decl"><tt>clean_file_tree(PrecompLevel,Dir)</tt> </span><p>Unwind the precompilation level at directory <span class="lpdoc-var">Dir</span>, cleaning the contents recursively (see <tt>untainted</tt> and <tt>cleanable(PrecompLevel)</tt> <a class="lpdoc-idx-anchor" id="27" href="#source_filter/1"><tt>source_filter/1</tt></a>).</p><ul class="lpdoc-itemize-minus"></ul></div></div><p> <div><div class="lpdoc-defname"><span class="lpdoc-predtag">PREDICATE</span><a class="lpdoc-idx-anchor" id="copy_file_or_dir/2" href="ciaosearch.html#copy_file_or_dir/2">copy_file_or_dir/2</a></div><div class="lpdoc-deftext"><p><span class="lpdoc-usage-header">Usage:</span><span class="lpdoc-usage-decl"><tt>copy_file_or_dir(FileName,DestDir)</tt> </span><p>Copy <span class="lpdoc-var">FileName</span> file into <span class="lpdoc-var">DestDir</span> directory. The path for <span class="lpdoc-var">DestDir</span> is created if it does not exists. If <span class="lpdoc-var">FileName</span> is a directory, all its contents are copied recursively.</p><ul class="lpdoc-itemize-minus"></ul></div></div><p> <div><div class="lpdoc-defname"><span class="lpdoc-predtag">PREDICATE</span><a class="lpdoc-idx-anchor" id="remove_dir/1" href="ciaosearch.html#remove_dir/1">remove_dir/1</a></div><div class="lpdoc-deftext"><p><span class="lpdoc-usage-header">Usage:</span><span class="lpdoc-usage-decl"><tt>remove_dir(Dir)</tt> </span><p>Delete the directory <span class="lpdoc-var">Dir</span> and all its contents recursively. Throws exception if file does not exist.</p><ul class="lpdoc-itemize-minus"></ul></div></div><p> <div><div class="lpdoc-defname"><span class="lpdoc-predtag">PREDICATE</span><a class="lpdoc-idx-anchor" id="remove_file_or_dir/1" href="ciaosearch.html#remove_file_or_dir/1">remove_file_or_dir/1</a></div><div class="lpdoc-deftext"><p><span class="lpdoc-usage-header">Usage:</span><span class="lpdoc-usage-decl"><tt>remove_file_or_dir(FileName)</tt> </span><p>Delete <span class="lpdoc-var">FileName</span>. If <span class="lpdoc-var">FileName</span> is a directory, all its contents are deleted recursively. Ignore errors if file does not exist.</p><ul class="lpdoc-itemize-minus"></ul></div></div><p> <div><div class="lpdoc-defname"><span class="lpdoc-predtag">PREDICATE</span><a class="lpdoc-idx-anchor" id="delete_glob/2" href="ciaosearch.html#delete_glob/2">delete_glob/2</a></div><div class="lpdoc-deftext"><p><span class="lpdoc-usage-header">Usage:</span><span class="lpdoc-usage-decl"><tt>delete_glob(Dir,Pattern)</tt> </span><p>Delete each file in directory <span class="lpdoc-var">Dir</span> (non-recursively) that matches the glob pattern <span class="lpdoc-var">Pattern</span></p><ul class="lpdoc-itemize-minus"></ul></div></div><p> <div><div class="lpdoc-defname"><span class="lpdoc-predtag">PREDICATE</span><a class="lpdoc-idx-anchor" id="remove_glob/2" href="ciaosearch.html#remove_glob/2">remove_glob/2</a></div><div class="lpdoc-deftext"><p><span class="lpdoc-usage-header">Usage:</span><span class="lpdoc-usage-decl"><tt>remove_glob(Dir,Pattern)</tt> </span><p>Like <a class="lpdoc-idx-anchor" id="28" href="#delete_glob/2"><tt>delete_glob/2</tt></a>, but uses <a class="lpdoc-idx-anchor" id="29" href="#remove_dir/1"><tt>remove_dir/1</tt></a> for each matching directory in <span class="lpdoc-var">Dir</span>.</p><ul class="lpdoc-itemize-minus"></ul></div></div><p> <div><div class="lpdoc-defname"><span class="lpdoc-predtag">REGTYPE</span><a class="lpdoc-idx-anchor" id="source_filter/1" href="ciaosearch.html#source_filter/1">source_filter/1</a></div><div class="lpdoc-deftext">A filter for source files. A filter is a basic filter, an extended filter (defined on terms on other filters), and a list of basic or extended filters.<p>Basic filters: <dl> <p><dt><tt>true</tt><dd> Enumerate all files (recursively).<p><dt><tt>nonrec</tt><dd> Do not recurse into directories (directories will be treated as files).<p><dt><tt>untainted</tt><dd> Enumerate all files, except those that are backups or hold repository metadata.<p><dt><tt>srctype(SrcTypes)</tt><dd> Enumerate source files of any of the specified <span class="lpdoc-var">SrcTypes</span>, a source type or list of source types. A source type (<a class="lpdoc-idx-anchor" id="30" href="#file_srctype/1"><tt>file_srctype/1</tt></a>) is any of types<tt>module</tt>, <tt>package</tt>, or <tt>include</tt> files (for user or included files).<p><dt><tt>proj(TreeProj)</tt><dd> Obtain a tree projection based on marks. Projections allow discarding whole subtrees or individual files. The valid projection names and their marks are:<p><dl> <p><dt><tt>compilable</tt><dd> for each directory, discard the subtree if it contains the <tt>NOCOMPILE</tt> file, or ignore the files whose name match with any of the patterns listed in the file <tt>NOCOMPILEFILES</tt>.<p><dt><tt>testable</tt><dd> same with <tt>NOTEST</tt> and <tt>NOTESTFILES</tt> (implies <tt>compilable</tt>).<p><dt><tt>distributable</tt><dd> same with <tt>NODISTRIBUTE</tt> and <tt>NODISTRIBUTEFILES</tt>.<p><dt><tt>installable</tt><dd> same with <tt>NOINSTALL</tt> and <tt>NOINSTALLFILES</tt>.<p></dl> <p><dt><tt>precomp(PrecompLevel)</tt><dd> Enumerate files for the specified precompilation level <span class="lpdoc-var">PrecompLevel</span> (see <a class="lpdoc-idx-anchor" id="31" href="#precomp_level/1"><tt>precomp_level/1</tt></a>).<p><dt><tt>cleanable(PrecompLevel)</tt><dd> Enumerate the files resulting from compilation of source files that must be cleaned in order reduce the precompilation to <span class="lpdoc-var">PrecompLevel</span>. E.g., <tt>PrecompLevel=src</tt> cleans all compiler output, <tt>PrecompLevel=noa</tt> cleans only platform dependant files.<p></dl> <p>Extended filters: <dl> <dt><tt>compilable_module</tt><dd> Enumerate Ciao modules that are suitable for automatic compilation during bundle build (in the untainted <tt>proj(compilable)</tt> projection).<p><dt><tt>testable_module</tt><dd> Enumerate Ciao modules that can be compiled and tested (in the untainted <tt>proj(compilable)</tt> and <tt>proj(testable)</tt> projection).<p><dt><tt>distributable_precomp(PrecompLevel)</tt><dd> Enumerate files that can be distributed (in the untainted <tt>proj(distributable)</tt> projection and for the given precompilation level <span class="lpdoc-var">PrecompLevel</span>).<p>Additionally, excludes the build directory and some temporary files.<p><dt><tt>installable_precomp(PrecompLevel)</tt><dd> Enumerate (source) files that can be installed (in the untainted <tt>proj(installable)</tt> projection and for the given precompilation level <span class="lpdoc-var">PrecompLevel</span>).<p>Additionally, excludes the build directory and some temporary files. </dl><p><span class="lpdoc-usage-header">Usage:</span><span class="lpdoc-usage-decl"><tt>source_filter(Filter)</tt> </span><p><span class="lpdoc-var">Filter</span> is a source file filter</p><ul class="lpdoc-itemize-minus"></ul></div></div><p> <div><div class="lpdoc-defname"><span class="lpdoc-predtag">REGTYPE</span><a class="lpdoc-idx-anchor" id="precomp_level/1" href="ciaosearch.html#precomp_level/1">precomp_level/1</a></div><div class="lpdoc-deftext">The valid precompilation levels are: <dl> <dt><tt>src</tt><dd> source files only <dt><tt>noa</tt><dd> sources and portable objects <dt><tt>bin</tt><dd> sources, portable, and architecture dependant objects (except special third-party files like elisp objects and Java classes) <dt><tt>full</tt><dd> like <tt>bin</tt>, including special third-party files. </dl><p><span class="lpdoc-usage-header">Usage:</span><span class="lpdoc-usage-decl"><tt>precomp_level(PrecompLevel)</tt> </span><p><span class="lpdoc-var">PrecompLevel</span> is a pre-compilation level</p><ul class="lpdoc-itemize-minus"></ul></div></div><p> <div><div class="lpdoc-defname"><span class="lpdoc-predtag">PREDICATE</span><a class="lpdoc-idx-anchor" id="match_def/3" href="ciaosearch.html#match_def/3">match_def/3</a></div><div class="lpdoc-deftext">No further documentation available for this predicate.</div></div><p> <div><div class="lpdoc-defname"><span class="lpdoc-predtag">REGTYPE</span><a class="lpdoc-idx-anchor" id="file_srctype/1" href="ciaosearch.html#file_srctype/1">file_srctype/1</a></div><div class="lpdoc-deftext">Source file types, defined as: <pre class="lpdoc-codeblock">file_srctype(module). file_srctype(package). file_srctype(include). </pre><p><span class="lpdoc-usage-header">Usage:</span><span class="lpdoc-usage-decl"><tt>file_srctype(T)</tt> </span><p><span class="lpdoc-var">T</span> is a source file type</p><ul class="lpdoc-itemize-minus"></ul></div></div><p> <div><div class="lpdoc-defname"><span class="lpdoc-predtag">PREDICATE</span><a class="lpdoc-idx-anchor" id="get_file_srctype/2" href="ciaosearch.html#get_file_srctype/2">get_file_srctype/2</a></div><div class="lpdoc-deftext">This operation should be relatively fast, since we only need to read the first term in the file. Modules start with a <tt>:- module/3</tt> (or <tt>:- module/2</tt>) or <tt>:- package/1</tt> directive.<p><span class="lpdoc-usage-header">Usage:</span><span class="lpdoc-usage-decl"><tt>get_file_srctype(FileName,Type)</tt> </span><p><span class="lpdoc-var">FileName</span> is a file of type <span class="lpdoc-var">Type</span> (<tt>module</tt>, <tt>package</tt>, or <tt>include</tt> for included or user sources). Fails if the file does not seem Ciao code</p><ul class="lpdoc-itemize-minus"><li><em>Call and exit should be compatible with:</em><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="32" href="basic_props.html#atm/1"><tt>basic_props:atm/1</tt></a>)</span><span><span class="lpdoc-var">FileName</span> is an atom. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="33" href="#file_srctype/1"><tt>source_tree:file_srctype/1</tt></a>)</span><span><span class="lpdoc-var">Type</span> is a source file type </span> <li><em>The following properties should hold at call time:</em><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="34" href="term_typing.html#nonvar/1"><tt>term_typing:nonvar/1</tt></a>)</span><span><span class="lpdoc-var">FileName</span> is currently a term which is not a free variable. </span> </ul></div></div><p> </div><div id="Documentation on imports"><h2>Documentation on imports</h2>This module has the following direct dependencies:<ul class="lpdoc-itemize-minus"><li><em>System library modules:</em><br/><a class="lpdoc-idx-anchor" id="35" href="system.html"><tt>system</tt></a>, <a class="lpdoc-idx-anchor" id="36" href="pathnames.html"><tt>pathnames</tt></a>, <a class="lpdoc-idx-anchor" id="37" href="lists.html"><tt>lists</tt></a>, <a class="lpdoc-idx-anchor" id="38" href="sort.html"><tt>sort</tt></a>, <a class="lpdoc-idx-anchor" id="39" href="aggregates.html"><tt>aggregates</tt></a>, <a class="lpdoc-idx-anchor" id="40" href="regexp_code.html"><tt>regexp_code</tt></a>, <a class="lpdoc-idx-anchor" id="41" href="system_extra.html"><tt>system_extra</tt></a>, <a class="lpdoc-idx-anchor" id="42" href="ciaosearch.html#bundle_paths"><tt>bundle_paths</tt></a>, <a class="lpdoc-idx-anchor" id="43" href="stream_utils.html"><tt>stream_utils</tt></a>, <a class="lpdoc-idx-anchor" id="44" href="read.html"><tt>read</tt></a>. <li><em>Packages:</em><br/><a class="lpdoc-idx-anchor" id="45" href="ciaosearch.html#prelude"><tt>prelude</tt></a>, <a class="lpdoc-idx-anchor" id="46" href="ciaosearch.html#initial"><tt>initial</tt></a>, <a class="lpdoc-idx-anchor" id="47" href="condcomp_doc.html"><tt>condcomp</tt></a>, <a class="lpdoc-idx-anchor" id="48" href="assertions_doc.html"><tt>assertions</tt></a>, <a class="lpdoc-idx-anchor" id="49" href="ciaosearch.html#assertions/assertions_basic"><tt>assertions/assertions_basic</tt></a>, <a class="lpdoc-idx-anchor" id="50" href="fsyntax_doc.html"><tt>fsyntax</tt></a>, <a class="lpdoc-idx-anchor" id="51" href="ciaosearch.html#hiord"><tt>hiord</tt></a>, <a class="lpdoc-idx-anchor" id="52" href="regtypes_doc.html"><tt>regtypes</tt></a>, <a class="lpdoc-idx-anchor" id="53" href="isomodes_doc.html"><tt>isomodes</tt></a>. </ul></div></div><div class="lpdoc-footer">Generated with LPdoc using Ciao</div></div><div class="lpdoc-clearer"></div></div></body></html>