Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/GAP/pkg/cap/doc/   (Algebra von RWTH Aachen Version 4.15.1©)  Datei vom 22.8.2025 mit Größe 55 kB image not shown  

Quelle  chap9.html   Sprache: HTML

 
 products/Sources/formale Sprachen/GAP/pkg/cap/doc/chap9.html


<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<title>GAP (CAP) - Chapter 9: Technical Details</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<meta name="generator" content="GAPDoc2HTML" />
<link rel="stylesheet" type="text/css" href="manual.css" />
<script src="manual.js" type="text/javascript"></script>
<script type="text/javascript">overwriteStyle();</script>
</head>
<body class="chap9"  onload="jscontent()">


<div class="chlinktop"><span class="chlink1">Goto Chapter: </span><a href="chap0.html">Top</a>  <a href="chap1.html">1</a>  <a href="chap2.html">2</a>  <a href="chap3.html">3</a>  <a href="chap4.html">4</a>  <a href="chap5.html">5</a>  <a href="chap6.html">6</a>  <a href="chap7.html">7</a>  <a href="chap8.html">8</a>  <a href="chap9.html">9</a>  <a href="chap10.html">10</a>  <a href="chap11.html">11</a>  <a href="chap12.html">12</a>  <a href="chap13.html">13</a>  <a href="chap14.html">14</a>  <a href="chap15.html">15</a>  <a href="chap16.html">16</a>  <a href="chap17.html">17</a>  <a href="chap18.html">18</a>  <a href="chapInd.html">Ind</a>  </div>

<div class="chlinkprevnexttop"> <a href="chap0.html">[Top of Book]</a>   <a href="chap0.html#contents">[Contents]</a>    <a href="chap8.html">[Previous Chapter]</a>    <a href="chap10.html">[Next Chapter]</a>   </div>

<p id="mathjaxlink" class="pcenter"><a href="chap9_mj.html">[MathJax on]</a></p>
<p><a id="X87A9EC0A7DF04931" name="X87A9EC0A7DF04931"></a></p>
<div class="ChapSects"><a href="chap9.html#X87A9EC0A7DF04931">9 <span class="Heading">Technical Details</span></a>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap9.html#X7A8C280B85B50DE0">9.1 <span class="Heading">The Category Cat</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap9.html#X7B3D8EB378625F73">9.1-1 ObjectCache</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap9.html#X84472BD57E11264C">9.1-2 MorphismCache</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap9.html#X8508AEF8845565A1">9.2 <span class="Heading">Tools</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap9.html#X8325EEB87BDE7B04">9.2-1 FunctionWithNamedArguments</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap9.html#X87857B6887466690">9.2-2 CAP_INTERNAL_GET_DATA_TYPE_FROM_STRING</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap9.html#X7E03E1EB7E0505C9">9.2-3 CAP_INTERNAL_GET_DATA_TYPES_FROM_STRINGS</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap9.html#X82C6A9FE7BA3CA5B">9.2-4 CAP_INTERNAL_REPLACED_STRING_WITH_FILTER</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap9.html#X7F3826497806B627">9.2-5 CAP_INTERNAL_REPLACED_STRINGS_WITH_FILTERS</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap9.html#X849B851C80D47B4F">9.2-6 CAP_INTERNAL_RETURN_OPTION_OR_DEFAULT</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap9.html#X7C7A71C97DC2FABF">9.2-7 CAP_INTERNAL_FIND_APPEARANCE_OF_SYMBOL_IN_FUNCTION</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap9.html#X78A121F97CF81A43">9.2-8 CAP_INTERNAL_MERGE_PRECONDITIONS_LIST</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap9.html#X7D69A73578441A9C">9.2-9 CAP_INTERNAL_ASSERT_VALUE_IS_OF_TYPE_GETTER</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap9.html#X82F35A5C80A6AB86">9.2-10 CAP_INTERNAL_ASSERT_IS_CELL_OF_CATEGORY</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap9.html#X8335A3308291E3A2">9.2-11 CAP_INTERNAL_ASSERT_IS_OBJECT_OF_CATEGORY</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap9.html#X7DD95FC27FBF20E3">9.2-12 CAP_INTERNAL_ASSERT_IS_MORPHISM_OF_CATEGORY</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap9.html#X818BBDDE8387D373">9.2-13 CAP_INTERNAL_ASSERT_IS_TWO_CELL_OF_CATEGORY</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap9.html#X82FC76688082956A">9.2-14 CachingStatistic</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap9.html#X7E4CA53E7C03600F">9.2-15 BrowseCachingStatistic</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap9.html#X7B2A707E797A06FB">9.2-16 InstallDeprecatedAlias</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap9.html#X7BE001D378D75CF9">9.2-17 IsSpecializationOfFilter</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap9.html#X7E756CEB799322B0">9.2-18 IsSpecializationOfFilterList</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap9.html#X7F953A7086264653">9.2-19 InstallMethodForCompilerForCAP</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap9.html#X7FC9241882AB3F5A">9.2-20 InstallOtherMethodForCompilerForCAP</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap9.html#X7AF9D3AC85CB0F3D">9.2-21 CapJitAddKnownMethod</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap9.html#X816D0A767BD73071">9.2-22 CapJitAddTypeSignature</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap9.html#X78CFB24B81162C1D">9.2-23 CapJitDataTypeOfListOf</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap9.html#X877F7F6081692CDF">9.2-24 CapJitDataTypeOfNTupleOf</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap9.html#X859BFCA17B526A4F">9.2-25 CapJitDataTypeOfGroup</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap9.html#X791E1AB37D1DE205">9.2-26 CapJitDataTypeOfRing</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap9.html#X812BAF8D81DBE36B">9.2-27 CapJitDataTypeOfCategory</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap9.html#X874807C979EDC49B">9.2-28 CapJitTypedExpression</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap9.html#X824449507B8AC925">9.2-29 CapFixpoint</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap9.html#X83607E077857CBDB">9.2-30 Iterated</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap9.html#X7D4C0F987B13D58D">9.2-31 Iterated</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap9.html#X7FA62DB97B67C4AB">9.2-32 TransitivelyNeededOtherPackages</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap9.html#X7E9D968D86A536EF">9.2-33 PackageOfCAPOperation</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap9.html#X844FE77D85C951AA">9.2-34 SafePosition</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap9.html#X85FE589D84D60BEC">9.2-35 SafeUniquePosition</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap9.html#X81DF04B87E3C9D0D">9.2-36 SafePositionProperty</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap9.html#X810EE26082CAA38E">9.2-37 SafeUniquePositionProperty</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap9.html#X860EA891868B5777">9.2-38 SafeFirst</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap9.html#X8608EAF482DAC239">9.2-39 SafeUniqueEntry</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap9.html#X7F2E50C87EC6E530">9.2-40 NTuple</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap9.html#X7A63799B824FAEBA">9.2-41 Pair</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap9.html#X7C52730F8526A57E">9.2-42 Triple</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap9.html#X7AE413027C8587FE">9.2-43 TransposedMatWithGivenDimensions</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap9.html#X7B339750826300B4">9.2-44 HandlePrecompiledTowers</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap9.html#X7D06D3287E3BFCBB">9.2-45 CAP_JIT_INCOMPLETE_LOGIC</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap9.html#X859ADC8783342268">9.2-46 CAP_JIT_EXPR_CASE_WRAPPER</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap9.html#X7F313F4B853D176C">9.2-47 ListWithKeys</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap9.html#X873A487F7DA2A359">9.2-48 SumWithKeys</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap9.html#X8321F3D8876ADA2D">9.2-49 ProductWithKeys</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap9.html#X7F0574797C13C966">9.2-50 ForAllWithKeys</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap9.html#X812F59097E8E7562">9.2-51 ForAnyWithKeys</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap9.html#X8322F3FF84EC9AEB">9.2-52 NumberWithKeys</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap9.html#X7D0B0ECF7F70FB8E">9.2-53 FilteredWithKeys</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap9.html#X7914B5437CBEB3EC">9.2-54 FirstWithKeys</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap9.html#X849D015F79B08FCC">9.2-55 LastWithKeys</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap9.html#X81386B5D7CE25406">9.2-56 CreateGapObjectWithAttributes</a></span>
</div></div>
</div>

<h3>9 <span class="Heading">Technical Details</span></h3>

<p><a id="X7A8C280B85B50DE0" name="X7A8C280B85B50DE0"></a></p>

<h4>9.1 <span class="Heading">The Category Cat</span></h4>

<p><a id="X7B3D8EB378625F73" name="X7B3D8EB378625F73"></a></p>

<h5>9.1-1 ObjectCache</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ ObjectCache</code>( <var class="Arg">functor</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>Returns: IsCachingObject</p>

<p>Retuns the caching object which stores the results of the functor <var class="Arg">functor</var> applied to objects.</p>

<p><a id="X84472BD57E11264C" name="X84472BD57E11264C"></a></p>

<h5>9.1-2 MorphismCache</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ MorphismCache</code>( <var class="Arg">functor</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>Returns: IsCachingObject</p>

<p>Retuns the caching object which stores the results of the functor <var class="Arg">functor</var> applied to morphisms.</p>

<p><a id="X8508AEF8845565A1" name="X8508AEF8845565A1"></a></p>

<h4>9.2 <span class="Heading">Tools</span></h4>

<p><a id="X8325EEB87BDE7B04" name="X8325EEB87BDE7B04"></a></p>

<h5>9.2-1 FunctionWithNamedArguments</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ FunctionWithNamedArguments</code>( <var class="Arg">specification</var>, <var class="Arg">func</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>Returns: a function</p>

<p>Simulates named arguments in <strong class="pkg">GAP</strong> as follows:</p>


<ul>
<li><p><var class="Arg">specification</var> is a list of pairs with first entry the name of the argument and second entry a default value (which must be immutable).</p>

</li>
<li><p><var class="Arg">func</var> must be a function with first argument <code class="code">CAP_NAMED_ARGUMENTS</code>.</p>

</li>
<li><p>The return value is a function with one argument fewer than <var class="Arg">func</var>.</p>

</li>
</ul>
<p>When calling the returned function, the arguments are passed on to <var class="Arg">func</var>. To simulate named arguments, any <strong class="pkg">GAP</strong> options appearing in <var class="Arg">specification</var> are consumed and put into the record <code class="code">CAP_NAMED_ARGUMENTS</code>.</p>

<p><a id="X87857B6887466690" name="X87857B6887466690"></a></p>

<h5>9.2-2 CAP_INTERNAL_GET_DATA_TYPE_FROM_STRING</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ CAP_INTERNAL_GET_DATA_TYPE_FROM_STRING</code>( <var class="Arg">filter_string</var>[, <var class="Arg">category</var>] )</td><td class="tdright">( function )</td></tr></table></div>
<p>Returns: a record</p>

<p>The function takes one of the strings listed under <code class="code">filter_list</code> in <a href="chap7.html#X7E1C4F9D80329FEC"><span class="RefLink">7.3</span></a> as input and returns the corresponding data type (see <code class="func">CapJitInferredDataTypes</code> (<a href="https://homalg-project.github.io/CAP_project/CompilerForCAP/doc/chap2.html#X821BE2CE7C30674E"><span class="RefLink">CompilerForCAP: CapJitInferredDataTypes</span></a>) for details). If no category is given, data types with generic filters (<code class="code">IsCapCategoryObject</code>, <code class="code">IsCapCategoryMorphism</code> etc.) are returned. However, those cannot be used in the context of <code class="code">CompilerForCAP</code> because the component <code class="code">category</code> cannot be set in this case.</p>

<p><a id="X7E03E1EB7E0505C9" name="X7E03E1EB7E0505C9"></a></p>

<h5>9.2-3 CAP_INTERNAL_GET_DATA_TYPES_FROM_STRINGS</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ CAP_INTERNAL_GET_DATA_TYPES_FROM_STRINGS</code>( <var class="Arg">list_of_strings</var>[, <var class="Arg">category</var>] )</td><td class="tdright">( function )</td></tr></table></div>
<p>Returns: a list</p>

<p>Applies <code class="func">CAP_INTERNAL_GET_DATA_TYPE_FROM_STRING</code> (<a href="chap9.html#X87857B6887466690"><span class="RefLink">9.2-2</span></a>) to all elements of <var class="Arg">list</var> and returns the result.</p>

<p><a id="X82C6A9FE7BA3CA5B" name="X82C6A9FE7BA3CA5B"></a></p>

<h5>9.2-4 CAP_INTERNAL_REPLACED_STRING_WITH_FILTER</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ CAP_INTERNAL_REPLACED_STRING_WITH_FILTER</code>( <var class="Arg">filter_string</var>[, <var class="Arg">category</var>] )</td><td class="tdright">( function )</td></tr></table></div>
<p>Returns: a filter</p>

<p>The function takes one of the strings listed under <code class="code">filter_list</code> in <a href="chap7.html#X7E1C4F9D80329FEC"><span class="RefLink">7.3</span></a> as input. The corresponding filter of the category <var class="Arg">category</var> is returned. If no category is given, generic filters (<code class="code">IsCapCategoryObject</code>, <code class="code">IsCapCategoryMorphism</code> etc.) are used.</p>

<p><a id="X7F3826497806B627" name="X7F3826497806B627"></a></p>

<h5>9.2-5 CAP_INTERNAL_REPLACED_STRINGS_WITH_FILTERS</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ CAP_INTERNAL_REPLACED_STRINGS_WITH_FILTERS</code>( <var class="Arg">list</var>[, <var class="Arg">category</var>] )</td><td class="tdright">( function )</td></tr></table></div>
<p>Returns: Replaced list</p>

<p>Applies <code class="func">CAP_INTERNAL_REPLACED_STRING_WITH_FILTER</code> (<a href="chap9.html#X82C6A9FE7BA3CA5B"><span class="RefLink">9.2-4</span></a>) to all elements of <var class="Arg">list</var> and returns the result.</p>

<p><a id="X849B851C80D47B4F" name="X849B851C80D47B4F"></a></p>

<h5>9.2-6 CAP_INTERNAL_RETURN_OPTION_OR_DEFAULT</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ CAP_INTERNAL_RETURN_OPTION_OR_DEFAULT</code>( <var class="Arg">string</var>, <var class="Arg">value</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>Returns: option value</p>

<p>Returns the value of the option with name string, or, if this value is fail, the object value.</p>

<p><a id="X7C7A71C97DC2FABF" name="X7C7A71C97DC2FABF"></a></p>

<h5>9.2-7 CAP_INTERNAL_FIND_APPEARANCE_OF_SYMBOL_IN_FUNCTION</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ CAP_INTERNAL_FIND_APPEARANCE_OF_SYMBOL_IN_FUNCTION</code>( <var class="Arg">function</var>, <var class="Arg">symbol_list</var>, <var class="Arg">loop_multiple</var>, <var class="Arg">replacement_record</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>Returns: a list of symbols with multiples</p>

<p>The function searches for the appearance of the strings in symbol list on the function function and returns a list of pairs, containing the name of the symbol and the number of appearance. If the symbol appears in a loop, the number of appearance is counted times the loop multiple. Moreover, if appearances of found strings should be replaced by collections of other strings, then these can be specified in the replacement record.</p>

<p><a id="X78A121F97CF81A43" name="X78A121F97CF81A43"></a></p>

<h5>9.2-8 CAP_INTERNAL_MERGE_PRECONDITIONS_LIST</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ CAP_INTERNAL_MERGE_PRECONDITIONS_LIST</code>( <var class="Arg">list1</var>, <var class="Arg">list2</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>Returns: merge list</p>

<p>The function takes two lists containing pairs of symbols (strings) and multiples. The lists are merged that pairs where the string only appears in one list is then added to the return list, if a pair with a string appears in both lists, the resulting lists only contains this pair once, with the higher multiple from both lists.</p>

<p><a id="X7D69A73578441A9C" name="X7D69A73578441A9C"></a></p>

<h5>9.2-9 CAP_INTERNAL_ASSERT_VALUE_IS_OF_TYPE_GETTER</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ CAP_INTERNAL_ASSERT_VALUE_IS_OF_TYPE_GETTER</code>( <var class="Arg">data_type</var>, <var class="Arg">human_readable_identifier_getter</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>Returns: a function</p>

<p>Returns a function <code class="code">f</code> which throws an error if its first argument is not of type <var class="Arg">data_type</var>. <var class="Arg">human_readable_identifier_getter</var> is a function returning a string which is used to refer to the first argument of <code class="code">f</code> in the error message. The arguments of <code class="code">f</code> except the first argument are passed on to <var class="Arg">human_readable_identifier_getter</var>.</p>

<p><a id="X82F35A5C80A6AB86" name="X82F35A5C80A6AB86"></a></p>

<h5>9.2-10 CAP_INTERNAL_ASSERT_IS_CELL_OF_CATEGORY</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ CAP_INTERNAL_ASSERT_IS_CELL_OF_CATEGORY</code>( <var class="Arg">cell</var>, <var class="Arg">category</var>, <var class="Arg">human_readable_identifier_getter</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>The function throws an error if <var class="Arg">cell</var> is not a cell of <var class="Arg">category</var>. If <var class="Arg">category</var> is the boolean <code class="code">false</code>, only general checks not specific to a concrete category are performed. <var class="Arg">human_readable_identifier_getter</var> is a 0-ary function returning a string which is used to refer to <var class="Arg">cell</var> in the error message.</p>

<p><a id="X8335A3308291E3A2" name="X8335A3308291E3A2"></a></p>

<h5>9.2-11 CAP_INTERNAL_ASSERT_IS_OBJECT_OF_CATEGORY</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ CAP_INTERNAL_ASSERT_IS_OBJECT_OF_CATEGORY</code>( <var class="Arg">object</var>, <var class="Arg">category</var>, <var class="Arg">human_readable_identifier_getter</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>The function throws an error if <var class="Arg">object</var> is not an object of <var class="Arg">category</var>. If <var class="Arg">category</var> is the boolean <code class="code">false</code>, only general checks not specific to a concrete category are performed. <var class="Arg">human_readable_identifier_getter</var> is a 0-ary function returning a string which is used to refer to <var class="Arg">cell</var> in the error message.</p>

<p><a id="X7DD95FC27FBF20E3" name="X7DD95FC27FBF20E3"></a></p>

<h5>9.2-12 CAP_INTERNAL_ASSERT_IS_MORPHISM_OF_CATEGORY</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ CAP_INTERNAL_ASSERT_IS_MORPHISM_OF_CATEGORY</code>( <var class="Arg">morphism</var>, <var class="Arg">category</var>, <var class="Arg">human_readable_identifier_getter</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>The function throws an error if <var class="Arg">morphism</var> is not a morphism of <var class="Arg">category</var>. If <var class="Arg">category</var> is the boolean <code class="code">false</code>, only general checks not specific to a concrete category are performed. <var class="Arg">human_readable_identifier_getter</var> is a 0-ary function returning a string which is used to refer to <var class="Arg">cell</var> in the error message.</p>

<p><a id="X818BBDDE8387D373" name="X818BBDDE8387D373"></a></p>

<h5>9.2-13 CAP_INTERNAL_ASSERT_IS_TWO_CELL_OF_CATEGORY</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ CAP_INTERNAL_ASSERT_IS_TWO_CELL_OF_CATEGORY</code>( <var class="Arg">two_cell</var>, <var class="Arg">category</var>, <var class="Arg">human_readable_identifier_getter</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>The function throws an error if <var class="Arg">two_cell</var> is not a <span class="Math">2</span>-cell of <var class="Arg">category</var>. If <var class="Arg">category</var> is the boolean <code class="code">false</code>, only general checks not specific to a concrete category are performed. <var class="Arg">human_readable_identifier_getter</var> is a 0-ary function returning a string which is used to refer to <var class="Arg">cell</var> in the error message.</p>

<p><a id="X82FC76688082956A" name="X82FC76688082956A"></a></p>

<h5>9.2-14 CachingStatistic</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ CachingStatistic</code>( <var class="Arg">category</var>[, <var class="Arg">operation</var>] )</td><td class="tdright">( function )</td></tr></table></div>
<p>Prints statistics for all caches in <var class="Arg">category</var>. If <var class="Arg">operation</var> is given (as a string), only statistics for the given operation cache is stored.</p>

<p><a id="X7E4CA53E7C03600F" name="X7E4CA53E7C03600F"></a></p>

<h5>9.2-15 BrowseCachingStatistic</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ BrowseCachingStatistic</code>( <var class="Arg">category</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>Displays statistics for all caches in <var class="Arg">category</var>. in a Browse window. Here "status" indicates if the cache is weak, strong, or inactive, "hits" is the number of successful cache accesses, "misses" the number of unsuccessful cache accesses, and "stored" the number of objects currently stored in the cache.</p>

<p><a id="X7B2A707E797A06FB" name="X7B2A707E797A06FB"></a></p>

<h5>9.2-16 InstallDeprecatedAlias</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ InstallDeprecatedAlias</code>( <var class="Arg">alias_name</var>, <var class="Arg">function_name</var>, <var class="Arg">deprecation_date</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>Makes the function given by <var class="Arg">function_name</var> available under the alias <var class="Arg">alias_name</var> with a deprecation warning including the date <var class="Arg">deprecation_date</var>.</p>

<p><a id="X7BE001D378D75CF9" name="X7BE001D378D75CF9"></a></p>

<h5>9.2-17 IsSpecializationOfFilter</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsSpecializationOfFilter</code>( <var class="Arg">filter1</var>, <var class="Arg">filter2</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>Checks if <var class="Arg">filter2</var> is more special than <var class="Arg">filter1</var>, i.e. if <var class="Arg">filter2</var> implies <var class="Arg">filter1</var>. <var class="Arg">filter1</var> and/or <var class="Arg">filter2</var> can also be one of the strings listed under <code class="code">filter_list</code> in <a href="chap7.html#X7E1C4F9D80329FEC"><span class="RefLink">7.3</span></a> and in this case are replaced by the corresponding filters (e.g. <code class="code">IsCapCategory</code>, <code class="code">IsCapCategoryObject</code>, <code class="code">IsCapCategoryMorphism</code>, ...).</p>

<p><a id="X7E756CEB799322B0" name="X7E756CEB799322B0"></a></p>

<h5>9.2-18 IsSpecializationOfFilterList</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsSpecializationOfFilterList</code>( <var class="Arg">filter_list1</var>, <var class="Arg">filter_list2</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>Checks if <var class="Arg">filter_list2</var> is more special than <var class="Arg">filter_list1</var>, i.e. if both lists have the same length and any element of <var class="Arg">filter_list2</var> is more special than the corresponding element of <var class="Arg">filter_list1</var> in the sense of <code class="func">IsSpecializationOfFilter</code> (<a href="chap9.html#X7BE001D378D75CF9"><span class="RefLink">9.2-17</span></a>). <var class="Arg">filter_list1</var> and <var class="Arg">filter_list2</var> can also be the string <code class="code">"any"</code>, respresenting a most general filter list of any length.</p>

<p><a id="X7F953A7086264653" name="X7F953A7086264653"></a></p>

<h5>9.2-19 InstallMethodForCompilerForCAP</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ InstallMethodForCompilerForCAP</code>( <var class="Arg">same</var>, <var class="Arg">as</var>, <var class="Arg">for</var>, <var class="Arg">InstallMethod</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>Installs a method via <code class="code">InstallMethod</code> and adds it to the list of methods known to the compiler. See <code class="func">CapJitAddKnownMethod</code> (<a href="chap9.html#X7AF9D3AC85CB0F3D"><span class="RefLink">9.2-21</span></a>) for requirements.</p>

<p><a id="X7FC9241882AB3F5A" name="X7FC9241882AB3F5A"></a></p>

<h5>9.2-20 InstallOtherMethodForCompilerForCAP</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ InstallOtherMethodForCompilerForCAP</code>( <var class="Arg">same</var>, <var class="Arg">as</var>, <var class="Arg">for</var>, <var class="Arg">InstallOtherMethod</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>Installs a method via <code class="code">InstallOtherMethod</code> and adds it to the list of methods known to the compiler. See <code class="func">CapJitAddKnownMethod</code> (<a href="chap9.html#X7AF9D3AC85CB0F3D"><span class="RefLink">9.2-21</span></a>) for requirements.</p>

<p><a id="X7AF9D3AC85CB0F3D" name="X7AF9D3AC85CB0F3D"></a></p>

<h5>9.2-21 CapJitAddKnownMethod</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ CapJitAddKnownMethod</code>( <var class="Arg">operation</var>, <var class="Arg">filters</var>, <var class="Arg">method</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>Adds a method to the list of methods known to the compiler. If the first filter implies <code class="code">IsCapCategory</code>, method selection only takes the number of arguments and the first filter into account. This allows to resolve operations even in the case that the syntax tree cannot fully be typed. If the first filter does not imply <code class="code">IsCapCategory</code>, method selection takes all filters into account. To strictly distinguish between the two cases, <code class="code">IsCapCategory</code> must not imply the first filter (except if the first filter is equal to <code class="code">IsCapCategory</code>). Method selection is strict in the sense that two different methods for the same operation must not be comparable. That is, they must have a different number of filters or the filters at at least one position must not be related via implication. In particular, adding two methods with a CAP category as first argument (or a convenience method for a CAP operation) with the same number of arguments and one category filter implying the other is not supported.</p>

<p><a id="X816D0A767BD73071" name="X816D0A767BD73071"></a></p>

<h5>9.2-22 CapJitAddTypeSignature</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ CapJitAddTypeSignature</code>( <var class="Arg">name</var>, <var class="Arg">input_filters</var>, <var class="Arg">output_data_type</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>(experimental) Adds a type signature for the global function or operation given by <var class="Arg">name</var> to the compiler. <var class="Arg">input_filters</var> must be a list of filters, or the string '"any"' representing a most general filter list of any length. <var class="Arg">output_data_type</var> must be a filter, a data type, or a function. If it is a function with one argument, it must accept a list of input types and return the corresponding data type of the output. If it is a function with two arguments, it must accept the arguments of a function call of <var class="Arg">name</var> (as syntax trees) and the function stack and return a record with components <code class="code">args</code> (the possibly modified arguments) and <code class="code">output_type</code(the data type of the output). See <code class="func">CapJitInferredDataTypes</code> (<a href="https://homalg-project.github.io/CAP_project/CompilerForCAP/doc/chap2.html#X821BE2CE7C30674E"><span class="RefLink">CompilerForCAP: CapJitInferredDataTypes</span></a>) for more details on data types.</p>

<p><a id="X78CFB24B81162C1D" name="X78CFB24B81162C1D"></a></p>

<h5>9.2-23 CapJitDataTypeOfListOf</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ CapJitDataTypeOfListOf</code>( <var class="Arg">element_type</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>(experimental) Returns the data type of a list whose elements are of type <var class="Arg">element_type</var>. <var class="Arg">element_type</var> must be a filter or a data type.</p>

<p><a id="X877F7F6081692CDF" name="X877F7F6081692CDF"></a></p>

<h5>9.2-24 CapJitDataTypeOfNTupleOf</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ CapJitDataTypeOfNTupleOf</code>( <var class="Arg">n</var>, <var class="Arg">element_types...</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>(experimental) Returns the data type of an <var class="Arg">n</var>-tuple whose entries are of types corresponding to <var class="Arg">element_types</var>. <var class="Arg">element_types...</var> must be filters or data types.</p>

<p><a id="X859BFCA17B526A4F" name="X859BFCA17B526A4F"></a></p>

<h5>9.2-25 CapJitDataTypeOfGroup</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ CapJitDataTypeOfGroup</code>( <var class="Arg">group</var> )</td><td class="tdright">( function )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ CapJitDataTypeOfElementOfGroup</code>( <var class="Arg">group</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>(experimental) Returns the data type of the group (or elements of the group) <var class="Arg">group</var>.</p>

<p><a id="X791E1AB37D1DE205" name="X791E1AB37D1DE205"></a></p>

<h5>9.2-26 CapJitDataTypeOfRing</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ CapJitDataTypeOfRing</code>( <var class="Arg">ring</var> )</td><td class="tdright">( function )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ CapJitDataTypeOfElementOfRing</code>( <var class="Arg">ring</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>(experimental) Returns the data type of the ring (or elements of the ring) <var class="Arg">ring</var>.</p>

<p><a id="X812BAF8D81DBE36B" name="X812BAF8D81DBE36B"></a></p>

<h5>9.2-27 CapJitDataTypeOfCategory</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ CapJitDataTypeOfCategory</code>( <var class="Arg">category</var> )</td><td class="tdright">( function )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ CapJitDataTypeOfObjectOfCategory</code>( <var class="Arg">category</var> )</td><td class="tdright">( function )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ CapJitDataTypeOfMorphismOfCategory</code>( <var class="Arg">category</var> )</td><td class="tdright">( function )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ CapJitDataTypeOfTwoCellOfCategory</code>( <var class="Arg">category</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>(experimental) Returns the data type of the category (or objects, morphisms, or two cells in the category) <var class="Arg">category</var>.</p>

<p><a id="X874807C979EDC49B" name="X874807C979EDC49B"></a></p>

<h5>9.2-28 CapJitTypedExpression</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ CapJitTypedExpression</code>( <var class="Arg">value</var>, <var class="Arg">data_type_getter</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>(experimental) Simply returns <var class="Arg">value</var>, but allows to specify the data type of <var class="Arg">value</var> for CompilerForCAP. <var class="Arg">data_type_getter</var> must be a literal function or a global variable pointing to a function. The function must accept no arguments or a single argument, and return a valid data type. If the function accepts a single argument, it must be inside a CAP operation or method known to CompilerForCAP (for example, see <code class="func">InstallMethodForCompilerForCAP</code> (<a href="chap9.html#X7F953A7086264653"><span class="RefLink">9.2-19</span></a>)), and the current category (i.e. the first argument of the CAP operation or method known to CompilerForCAP) will be passed to the function. IMPORTANT: If <var class="Arg">data_type_getter</var> is a literal function, it must not contain references to variables in its context. Otherwise the code might access random memory locations. See <code class="func">CapJitInferredDataTypes</code> (<a href="https://homalg-project.github.io/CAP_project/CompilerForCAP/doc/chap2.html#X821BE2CE7C30674E"><span class="RefLink">CompilerForCAP: CapJitInferredDataTypes</span></a>) for more details on data types.</p>

<p><a id="X824449507B8AC925" name="X824449507B8AC925"></a></p>

<h5>9.2-29 CapFixpoint</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ CapFixpoint</code>( <var class="Arg">predicate</var>, <var class="Arg">func</var>, <var class="Arg">initial_value</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>Computes a fixpoint of <var class="Arg">func</var> with regard to equality given by <var class="Arg">predicate</var>, starting with <var class="Arg">initial_value</var>. If no such fixpoint exists, the execution does not terminate.</p>

<p><a id="X83607E077857CBDB" name="X83607E077857CBDB"></a></p>

<h5>9.2-30 Iterated</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ Iterated</code>( <var class="Arg">list</var>, <var class="Arg">func</var>, <var class="Arg">initial_value</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Shorthand for <code class="code">Iterated( Concatenation( [ <var class="Arg">initial_value</var> ], <var class="Arg">list</var> ), <var class="Arg">func</var> )</code>.</p>

<p><a id="X7D4C0F987B13D58D" name="X7D4C0F987B13D58D"></a></p>

<h5>9.2-31 Iterated</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ Iterated</code>( <var class="Arg">list</var>, <var class="Arg">func</var>, <var class="Arg">initial_value</var>, <var class="Arg">terminal_value</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Shorthand for <code class="code">Iterated( Concatenation( [ <var class="Arg">initial_value</var> ], <var class="Arg">list</var>, [ <var class="Arg">terminal_value</var> ] ), <var class="Arg">func</var> )</code>.</p>

<p><a id="X7FA62DB97B67C4AB" name="X7FA62DB97B67C4AB"></a></p>

<h5>9.2-32 TransitivelyNeededOtherPackages</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ TransitivelyNeededOtherPackages</code>( <var class="Arg">package_name</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>Returns a list of package names which are transitively needed other packages of the package <var class="Arg">package_name</var>.</p>

<p><a id="X7E9D968D86A536EF" name="X7E9D968D86A536EF"></a></p>

<h5>9.2-33 PackageOfCAPOperation</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ PackageOfCAPOperation</code>( <var class="Arg">operation_name</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>Returns the name of the package to which the CAP operation given by <var class="Arg">operation_name</var> belongs or fail if the package is not known.</p>

<p><a id="X844FE77D85C951AA" name="X844FE77D85C951AA"></a></p>

<h5>9.2-34 SafePosition</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ SafePosition</code>( <var class="Arg">list</var>, <var class="Arg">obj</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: an integer</p>

<p>Returns <code class="code">Position( <var class="Arg">list</var>, <var class="Arg">obj</var> )</code> while asserting that this value is not <code class="code">fail</code>.</p>

<p><a id="X85FE589D84D60BEC" name="X85FE589D84D60BEC"></a></p>

<h5>9.2-35 SafeUniquePosition</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ SafeUniquePosition</code>( <var class="Arg">list</var>, <var class="Arg">obj</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: an integer</p>

<p>Returns <code class="code">Position( <var class="Arg">list</var>, <var class="Arg">obj</var> )</code> while asserting that this value is not <code class="code">fail</code> and the position is unique.</p>

<p><a id="X81DF04B87E3C9D0D" name="X81DF04B87E3C9D0D"></a></p>

<h5>9.2-36 SafePositionProperty</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ SafePositionProperty</code>( <var class="Arg">list</var>, <var class="Arg">func</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: an integer</p>

<p>Returns <code class="code">PositionProperty( <var class="Arg">list</var>, <var class="Arg">func</var> )</code> while asserting that this value is not <code class="code">fail</code>.</p>

<p><a id="X810EE26082CAA38E" name="X810EE26082CAA38E"></a></p>

<h5>9.2-37 SafeUniquePositionProperty</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ SafeUniquePositionProperty</code>( <var class="Arg">list</var>, <var class="Arg">func</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: an integer</p>

<p>Returns a position in <var class="Arg">list</var> for which <var class="Arg">func</var> returns <code class="code">true</code> when applied to the corresponding entry while asserting that there exists exactly one such position.</p>

<p><a id="X860EA891868B5777" name="X860EA891868B5777"></a></p>

<h5>9.2-38 SafeFirst</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ SafeFirst</code>( <var class="Arg">list</var>, <var class="Arg">func</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: an element of the list</p>

<p>Returns <code class="code">First( <var class="Arg">list</var>, <var class="Arg">func</var> )</code> while asserting that this value is not <code class="code">fail</code>.</p>

<p><a id="X8608EAF482DAC239" name="X8608EAF482DAC239"></a></p>

<h5>9.2-39 SafeUniqueEntry</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ SafeUniqueEntry</code>( <var class="Arg">list</var>, <var class="Arg">func</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: an element of the list</p>

<p>Returns a value in <var class="Arg">list</var> for which <var class="Arg">func</var> returns <code class="code">true</code> while asserting that there exists exactly one such entry.</p>

<p><a id="X7F2E50C87EC6E530" name="X7F2E50C87EC6E530"></a></p>

<h5>9.2-40 NTuple</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ NTuple</code>( <var class="Arg">n</var>, <var class="Arg">args...</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>Returns: a list</p>

<p>Returns <var class="Arg">args</var> while asserting that its length is <var class="Arg">n</var>.</p>

<p><a id="X7A63799B824FAEBA" name="X7A63799B824FAEBA"></a></p>

<h5>9.2-41 Pair</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ Pair</code>( <var class="Arg">first</var>, <var class="Arg">second</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>Returns: a list</p>

<p>Alias for <code class="code">NTuple( 2, <var class="Arg">first</var>, <var class="Arg">second</var> )</code>.</p>

<p><a id="X7C52730F8526A57E" name="X7C52730F8526A57E"></a></p>

<h5>9.2-42 Triple</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ Triple</code>( <var class="Arg">first</var>, <var class="Arg">second</var>, <var class="Arg">third</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>Returns: a list</p>

<p>Alias for <code class="code">NTuple( 3, <var class="Arg">first</var>, <var class="Arg">second</var>, <var class="Arg">third</var> )</code>.</p>

<p><a id="X7AE413027C8587FE" name="X7AE413027C8587FE"></a></p>

<h5>9.2-43 TransposedMatWithGivenDimensions</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ TransposedMatWithGivenDimensions</code>( <var class="Arg">nr_rows</var>, <var class="Arg">nr_cols</var>, <var class="Arg">listlist</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>Returns: a list (of lists)</p>

<p>The arguments are two integers <var class="Arg">nr_rows</var>, <var class="Arg">nr_cols</var> and a list of lists <var class="Arg">listlist</var> such that <var class="Arg">nr_rows</var> = <code class="code">Length</code>(<var class="Arg">listlist</var>) and <var class="Arg">nr_cols</var> = <code class="code">Length</code>(<var class="Arg">listlist</var><span class="Math">[i]</span>) for <span class="Math">i=1</span> to <var class="Arg">nr_rows</var>. The output is the transpose of <var class="Arg">listlist</var> as a list consisting of <var class="Arg">nr_cols</var> rows and <var class="Arg">nr_rows</var> columns.</p>

<p><a id="X7B339750826300B4" name="X7B339750826300B4"></a></p>

<h5>9.2-44 HandlePrecompiledTowers</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ HandlePrecompiledTowers</code>( <var class="Arg">category</var>, <var class="Arg">underlying_category</var>, <var class="Arg">constructor_name</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>Handles the information stored in <code class="code"><var class="Arg">underlying_category</var>!.compiler_hints.precompiled_towers</code> (if bound) which is a list of records with components:</p>


<ul>
<li><p><code class="code">remaining_constructors_in_tower</code>: a non-empty list of strings (names of category constructors)</p>

</li>
<li><p><code class="code">precompiled_functions_adder</code>: a function accepting a CAP category as input</p>

</li>
</ul>
<p>If <var class="Arg">constructor_name</var> is the only entry of <code class="code">remaining_constructors_in_tower</code>, <code class="code">precompiled_functions_adder</code> is applied to <var class="Arg">category</var> (except if the option <code class="code">no_precompiled_code</code> is set to <code class="code">true</code>) and should add precompiled code. Else, if <var class="Arg">constructor_name</var> is the first entry of <code class="code">remaining_constructors_in_tower</code>, the information is attached to <code class="code"><var class="Arg">category</var>!.compiler_hints.precompiled_towers</code> after removing <var class="Arg">constructor_name</var> from <code class="code">remaining_constructors_in_tower</code>. Note: Currently, there is no logic for finding the "optimal" code to install if <var class="Arg">constructor_name</var> is the only entry of <code class="code">remaining_constructors_in_tower</code> of multiple entries.</p>

<p><a id="X7D06D3287E3BFCBB" name="X7D06D3287E3BFCBB"></a></p>

<h5>9.2-45 CAP_JIT_INCOMPLETE_LOGIC</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ CAP_JIT_INCOMPLETE_LOGIC</code>( <var class="Arg">value</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>Simply returns <var class="Arg">value</var>. Used to signify that the argument is not fully run through all logic functions/templates by CompilerForCAP.</p>

<p><a id="X859ADC8783342268" name="X859ADC8783342268"></a></p>

<h5>9.2-46 CAP_JIT_EXPR_CASE_WRAPPER</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ CAP_JIT_EXPR_CASE_WRAPPER</code>( <var class="Arg">func</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>Simply returns <var class="Arg">func</var>, which must be a literal function without arguments only containing an <code class="code">if-elif-else</code> statement with each branch consisting of a single <code class="code">return</code> statement. Used to write expressions of the form <code class="code">function() if-elif-else end()</code> as <code class="code">CAP_JIT_EXPR_CASE_WRAPPER(function() if-elif-else end)()</code> because the former is not valid in Julia.</p>

<p><a id="X7F313F4B853D176C" name="X7F313F4B853D176C"></a></p>

<h5>9.2-47 ListWithKeys</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ ListWithKeys</code>( <var class="Arg">list</var>, <var class="Arg">func</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>Returns: a list</p>

<p>Same as <code class="code">List( <var class="Arg">list</var>, <var class="Arg">func</var> )</code> but <var class="Arg">func</var> gets both the key <code class="code">i</code> and <code class="code"><var class="Arg">list</var>[i]</code> as arguments.</p>

<p><a id="X873A487F7DA2A359" name="X873A487F7DA2A359"></a></p>

<h5>9.2-48 SumWithKeys</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ SumWithKeys</code>( <var class="Arg">list</var>, <var class="Arg">func</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>Returns: a list</p>

<p>Same as <code class="code">Sum( <var class="Arg">list</var>, <var class="Arg">func</var> )</code> but <var class="Arg">func</var> gets both the key <code class="code">i</code> and <code class="code"><var class="Arg">list</var>[i]</code> as arguments.</p>

<p><a id="X8321F3D8876ADA2D" name="X8321F3D8876ADA2D"></a></p>

<h5>9.2-49 ProductWithKeys</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ ProductWithKeys</code>( <var class="Arg">list</var>, <var class="Arg">func</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>Returns: a list</p>

<p>Same as <code class="code">Product( <var class="Arg">list</var>, <var class="Arg">func</var> )</code> but <var class="Arg">func</var> gets both the key <code class="code">i</code> and <code class="code"><var class="Arg">list</var>[i]</code> as arguments.</p>

<p><a id="X7F0574797C13C966" name="X7F0574797C13C966"></a></p>

<h5>9.2-50 ForAllWithKeys</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ ForAllWithKeys</code>( <var class="Arg">list</var>, <var class="Arg">func</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>Returns: a list</p>

<p>Same as <code class="code">ForAll( <var class="Arg">list</var>, <var class="Arg">func</var> )</code> but <var class="Arg">func</var> gets both the key <code class="code">i</code> and <code class="code"><var class="Arg">list</var>[i]</code> as arguments.</p>

<p><a id="X812F59097E8E7562" name="X812F59097E8E7562"></a></p>

<h5>9.2-51 ForAnyWithKeys</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ ForAnyWithKeys</code>( <var class="Arg">list</var>, <var class="Arg">func</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>Returns: a list</p>

<p>Same as <code class="code">ForAny( <var class="Arg">list</var>, <var class="Arg">func</var> )</code> but <var class="Arg">func</var> gets both the key <code class="code">i</code> and <code class="code"><var class="Arg">list</var>[i]</code> as arguments.</p>

<p><a id="X8322F3FF84EC9AEB" name="X8322F3FF84EC9AEB"></a></p>

<h5>9.2-52 NumberWithKeys</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ NumberWithKeys</code>( <var class="Arg">list</var>, <var class="Arg">func</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>Returns: a list</p>

<p>Same as <code class="code">Number( <var class="Arg">list</var>, <var class="Arg">func</var> )</code> but <var class="Arg">func</var> gets both the key <code class="code">i</code> and <code class="code"><var class="Arg">list</var>[i]</code> as arguments.</p>

<p><a id="X7D0B0ECF7F70FB8E" name="X7D0B0ECF7F70FB8E"></a></p>

<h5>9.2-53 FilteredWithKeys</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ FilteredWithKeys</code>( <var class="Arg">list</var>, <var class="Arg">func</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>Returns: a list</p>

<p>Same as <code class="code">Filtered( <var class="Arg">list</var>, <var class="Arg">func</var> )</code> but <var class="Arg">func</var> gets both the key <code class="code">i</code> and <code class="code"><var class="Arg">list</var>[i]</code> as arguments.</p>

<p><a id="X7914B5437CBEB3EC" name="X7914B5437CBEB3EC"></a></p>

<h5>9.2-54 FirstWithKeys</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ FirstWithKeys</code>( <var class="Arg">list</var>, <var class="Arg">func</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>Returns: a list</p>

<p>Same as <code class="code">First( <var class="Arg">list</var>, <var class="Arg">func</var> )</codebut <var class="Arg">func</var> gets both the key <code class="code">i</code> and <code class="code"><var class="Arg">list</var>[i]</code> as arguments.</p>

<p><a id="X849D015F79B08FCC" name="X849D015F79B08FCC"></a></p>

<h5>9.2-55 LastWithKeys</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ LastWithKeys</code>( <var class="Arg">list</var>, <var class="Arg">func</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>Returns: a list</p>

<p>Same as <code class="code">Last( <var class="Arg">list</var>, <var class="Arg">func</var> )</code> but <var class="Arg">func</var> gets both the key <code class="code">i</code> and <code class="code"><var class="Arg">list</var>[i]</code> as arguments.</p>

<p><a id="X81386B5D7CE25406" name="X81386B5D7CE25406"></a></p>

<h5>9.2-56 CreateGapObjectWithAttributes</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ CreateGapObjectWithAttributes</code>( <var class="Arg">type</var>[, <var class="Arg">attribute1</var>, <var class="Arg">value1</var>, <var class="Arg">...</var>] )</td><td class="tdright">( function )</td></tr></table></div>
<p>Shorthand for <code class="code">ObjectifyWithAttributes( rec( ), type, [attribute1, value1, ...] )</code>.</p>


<div class="chlinkprevnextbot"> <a href="chap0.html">[Top of Book]</a>   <a href="chap0.html#contents">[Contents]</a>    <a href="chap8.html">[Previous Chapter]</a>    <a href="chap10.html">[Next Chapter]</a>   </div>


<div class="chlinkbot"><span class="chlink1">Goto Chapter: </span><a href="chap0.html">Top</a>  <a href="chap1.html">1</a>  <a href="chap2.html">2</a>  <a href="chap3.html">3</a>  <a href="chap4.html">4</a>  <a href="chap5.html">5</a>  <a href="chap6.html">6</a>  <a href="chap7.html">7</a>  <a href="chap8.html">8</a>  <a href="chap9.html">9</a>  <a href="chap10.html">10</a>  <a href="chap11.html">11</a>  <a href="chap12.html">12</a>  <a href="chap13.html">13</a>  <a href="chap14.html">14</a>  <a href="chap15.html">15</a>  <a href="chap16.html">16</a>  <a href="chap17.html">17</a>  <a href="chap18.html">18</a>  <a href="chapInd.html">Ind</a>  </div>

<hr />
<p class="foot">generated by <a href="https://www.math.rwth-aachen.de/~Frank.Luebeck/GAPDoc">GAPDoc2HTML</a></p>
</body>
</html>

100%


¤ Dauer der Verarbeitung: 0.27 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung ist noch experimentell.