mirror of
https://github.com/ganelson/inform.git
synced 2024-07-16 22:14:23 +03:00
2046 lines
482 KiB
HTML
2046 lines
482 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
|
<html>
|
|
<head>
|
|
<title>Phrase Definitions</title>
|
|
<meta name="viewport" content="width=device-width initial-scale=1">
|
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
|
<meta http-equiv="Content-Language" content="en-gb">
|
|
<link href="../inweb.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
|
|
|
</head>
|
|
<body>
|
|
<nav role="navigation">
|
|
<h1><a href="../index.html">
|
|
<img src="../docs-src/Figures/Inform.png" height=72">
|
|
</a></h1>
|
|
<ul><li><a href="../compiler.html">compiler tools</a></li>
|
|
<li><a href="../other.html">other tools</a></li>
|
|
<li><a href="../extensions.html">extensions and kits</a></li>
|
|
<li><a href="../units.html">unit test tools</a></li>
|
|
</ul><h2>Extensions</h2><ul>
|
|
<li><a href="index.html"><span class="selectedlink">basic_inform</span></a></li>
|
|
<li><a href="../standard_rules/index.html">standard_rules</a></li>
|
|
</ul><h2>Kits</h2><ul>
|
|
<li><a href="../BasicInformKit/index.html">BasicInformKit</a></li>
|
|
<li><a href="../BasicInformExtrasKit/index.html">BasicInformExtrasKit</a></li>
|
|
<li><a href="../CommandParserKit/index.html">CommandParserKit</a></li>
|
|
<li><a href="../EnglishLanguageKit/index.html">EnglishLanguageKit</a></li>
|
|
<li><a href="../WorldModelKit/index.html">WorldModelKit</a></li>
|
|
|
|
</ul>
|
|
</nav>
|
|
<main role="main">
|
|
|
|
<!--Weave of 'Phrase Definitions' generated by 7-->
|
|
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../extensions.html">Extensions</a></li><li><a href="index.html">basicinform</a></li><li><b>Phrase Definitions</b></li></ul><p class="purpose">The phrases making up the basic Inform language, and in terms of which all other phrases and rules are defined.</p>
|
|
|
|
<ul class="toc"><li><a href="S-pd.html#SP4">§4. Say phrases</a></li><li><a href="S-pd.html#SP13">§13. Variables</a></li><li><a href="S-pd.html#SP16">§16. Arithmetic</a></li><li><a href="S-pd.html#SP22">§22. Control structures</a></li><li><a href="S-pd.html#SP29">§29. Values</a></li><li><a href="S-pd.html#SP32">§32. Text</a></li><li><a href="S-pd.html#SP37">§37. Adaptive text</a></li><li><a href="S-pd.html#SP38">§38. Data Structures</a></li><li><a href="S-pd.html#SP41">§41. Lists</a></li><li><a href="S-pd.html#SP47">§47. Functional Programming</a></li><li><a href="S-pd.html#SP49">§49. Rulebooks and Activities</a></li><li><a href="S-pd.html#SP53">§53. External Files</a></li></ul><hr class="tocbar">
|
|
|
|
<p class="inwebparagraph"><a id="SP1"></a><b>§1. </b>All phrases of the Inform language itself are defined here. The Standard
|
|
Rules extension adds more, specialised for interactive fiction creation,
|
|
but the bones of the language are here. For example, we will define what
|
|
the plus sign will mean, and how Inform should compile "say N in words",
|
|
where N is a number. Inform has no phrase definitions built in, as such;
|
|
but it does contain assumptions about control structures such as "say ...",
|
|
"repeat ...", "let ...", "otherwise ..." and so on will behave. Those, we
|
|
would not be able to redefine in fundamentally different ways. In most
|
|
respects, though, we are more or less free to define any language we like.
|
|
</p>
|
|
|
|
<p class="inwebparagraph">At first sight, these phrase definitions look little more than simple
|
|
transliterations, and this was one source of early criticism of Inform 7.
|
|
Phrases appeared to have very simplistic definitions, with the natural
|
|
language simply being a verbose description of obviously equivalent C-like
|
|
code. However, the simplicity is misleading, because the definitions below
|
|
tend to conceal where the complexity of the translation process suddenly
|
|
increases. If the preamble includes "(c - condition)", and the definition
|
|
includes the expansion <code class="display"><span class="extract">{c}</span></code>, then the text forming c is translated in a way
|
|
much more profound than any simple substitution process could describe.
|
|
Type-checking also complicates the code produced below, since Inform
|
|
automatically generates the code needed to perform run-time type checking at
|
|
any point where doubt remains as to the phrase definition which must be used.
|
|
</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP2"></a><b>§2. </b>Many of these phrases have what are called inline definitions, written
|
|
using the <code class="display"><span class="extract">(-</span></code> and <code class="display"><span class="extract">-)</span></code> notation. Non-inline phrases are compiled as
|
|
functions, which are then called when they need to be used. For example,
|
|
"To say the magic number: say 17." compiles to a function, and when
|
|
another phrase includes the instruction "say the magic number", that
|
|
instruction compiles a call to this function. But an inline phrase
|
|
instead generates Inter instructions to do something directly. (That
|
|
something may in fact still be just a function call, but not always.)
|
|
The Inter code to be generated is expressed by the contents of the
|
|
definition between the <code class="display"><span class="extract">(-</span></code> and <code class="display"><span class="extract">-)</span></code> markers, and is written in a
|
|
marked-up form of Inform 6 notation. This is much more concise and
|
|
readable than if the Inter code were written out longhand, but it may
|
|
give the misleading impression that Inform inline definitions can only
|
|
produce Inform 6 code. That is not so: they produce Inter code, which
|
|
can then be translated as needed.
|
|
</p>
|
|
|
|
<p class="inwebparagraph">Most of the definitions here also have annotations to positions in the
|
|
main Inform dcumentation: for example, <code class="display"><span class="extract">(documented at phs_s)</span></code>. This has
|
|
no effect on the code compiled, and is used only when Inform generates
|
|
certain problem messages; if the source text misuses the phrase, the problem
|
|
can then give a reference to the relevant documentation. <code class="display"><span class="extract">phs_s</span></code> is a
|
|
typical example of a "documentation token", and is only a label. See the
|
|
source of the Inform documentation for how this markup is done.
|
|
</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP3"></a><b>§3. </b>Unit tests for the phrases below have test case names beginning <code class="display"><span class="extract">BIP-</span></code>,
|
|
which stands for "Basic Inform phrase". In fact, these come in pairs, one for
|
|
each virtual machine we customarily generate code to. For example, <code class="display"><span class="extract">BIP-Say</span></code>
|
|
tests the "say" phrase for the Z-machine target, and <code class="display"><span class="extract">BIP-Say-G</span></code> does the same
|
|
for the Glulx target. But in the commentary below, test cases will be listed
|
|
only once.
|
|
</p>
|
|
|
|
<p class="inwebparagraph">It follows that running <code class="display"><span class="extract">intest -from inform7 BIP-%c+</span></code> will test all of
|
|
these phrases on all platforms, since this regular expression matches all
|
|
test case names beginning with "BIP-".
|
|
</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP4"></a><b>§4. Say phrases. </b>We begin with saying phrases: the very first phrase to exist is the one
|
|
printing a single value — literal text, a number, a time, an object, or
|
|
really almost anything, since the vast majority of kinds in Inform are
|
|
sayable. There used to be separate definitions for saying text, numbers
|
|
and unicode characters here, but they were removed in June 2015 as being
|
|
redundant. Though they did no harm, they made some problem messages longer
|
|
than necessary by obliging them to cite a longer list of possible readings
|
|
of a misread phrase.
|
|
</p>
|
|
|
|
<p class="inwebparagraph">The three inline definitions here neatly demonstrate the three sorts of
|
|
things which appear inside <code class="display"><span class="extract">(-</span></code> and <code class="display"><span class="extract">-)</span></code>. The definition for "To say s",
|
|
which looks more familiar as the "[s]" text substitution, is straightforwardly
|
|
Inform 6 notation. The definition for "To say (something - number) in words"
|
|
is I6 notation except for the <code class="display"><span class="extract">{something}</span></code> part in braces: this expands
|
|
to the value used by the code causing compilation. For example, if the code
|
|
to be compiled is "say 17 in words" then <code class="display"><span class="extract">{something}</span></code> here would expand to
|
|
the constant 17. The definition for "To say (val)" is much more complex than
|
|
I6 notation could convey, and so a more complex escape notation is needed,
|
|
<code class="display"><span class="extract">{-say:val:K}</span></code>, which tells Inform o compile code which will say <code class="display"><span class="extract">val</span></code> with
|
|
whatever method is appropriate to its kind <code class="display"><span class="extract">K</span></code>. For documentation on these
|
|
escape notations, see the core Inform source code.
|
|
</p>
|
|
|
|
<p class="inwebparagraph">The global variable <code class="display"><span class="extract">say__n</span></code> tracks the last number printed. For the "in
|
|
words" definition, we need to set it by hand, since Inform doesn't otherwise
|
|
realise that number-printing is what we are doing here. For definitions of
|
|
functions such as <code class="display"><span class="extract">STextSubstitution</span></code>, see the source for <code class="display"><span class="extract">BasicInformKit</span></code>,
|
|
which is also where <code class="display"><span class="extract">say__n</span></code> is defined.
|
|
</p>
|
|
|
|
<p class="inwebparagraph">See test case <code class="display"><span class="extract">BIP-Say</span></code>.
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">Part</span><span class="plain"> </span><span class="identifier">Three</span><span class="plain"> - </span><span class="identifier">Phrasebook</span>
|
|
|
|
<span class="identifier">Chapter</span><span class="plain"> </span><span class="constant">1</span><span class="plain"> - </span><span class="identifier">Saying</span>
|
|
|
|
<span class="identifier">Section</span><span class="plain"> </span><span class="constant">1</span><span class="plain"> - </span><span class="identifier">Saying</span><span class="plain"> </span><span class="identifier">Values</span>
|
|
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">say</span><span class="plain"> (</span><span class="identifier">val</span><span class="plain"> - </span><span class="identifier">sayable</span><span class="plain"> </span><span class="identifier">value</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">kind</span><span class="plain"> </span><span class="identifier">K</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_say</span><span class="plain">):</span>
|
|
<span class="plain">(- {-</span><span class="identifier">say</span><span class="plain">:</span><span class="identifier">val</span><span class="plain">:</span><span class="identifier">K</span><span class="plain">} -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">say</span><span class="plain"> (</span><span class="identifier">something</span><span class="plain"> - </span><span class="identifier">number</span><span class="plain">) </span><span class="identifier">in</span><span class="plain"> </span><span class="identifier">words</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">phs_numwords</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">print</span><span class="plain"> (</span><span class="identifier">number</span><span class="plain">) </span><span class="identifier">say__n</span><span class="plain">=({</span><span class="identifier">something</span><span class="plain">}); -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">say</span><span class="plain"> </span><span class="identifier">s</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">phs_s</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">STextSubstitution</span><span class="plain">(); -).</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP5"></a><b>§5. </b>"Showme" is a debugging version of "say" which can print some version of
|
|
the value, and the kind, of just about anything.
|
|
</p>
|
|
|
|
<p class="inwebparagraph">See test case <code class="display"><span class="extract">BIP-Showme</span></code>.
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">showme</span><span class="plain"> (</span><span class="identifier">val</span><span class="plain"> - </span><span class="identifier">value</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_showme</span><span class="plain">):</span>
|
|
<span class="plain">(- {-</span><span class="identifier">show</span><span class="plain">-</span><span class="identifier">me</span><span class="plain">:</span><span class="identifier">val</span><span class="plain">} -).</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP6"></a><b>§6. </b>Objects are the most difficult things to say, because of the elaborate
|
|
apparatus for managing their natural-language representations. In particular,
|
|
we need to say them with a definite or indefinite article, which can either
|
|
be capitalised or not, and as part of that we need to keep track of whether
|
|
they are proper nouns; in languages other than English, there are also gender
|
|
and case to worry about.
|
|
</p>
|
|
|
|
<p class="inwebparagraph">Note that "To say ..." phrases are case sensitive on the first word, so that
|
|
"to say a something" and "to say A something" are different.
|
|
</p>
|
|
|
|
<p class="inwebparagraph">A curiosity of Inform 6's syntax, arising I think mostly from the need to
|
|
save property memory in "Curses" (1993), the work of IF for which Inform 1
|
|
had been created, is that it lacks a <code class="display"><span class="extract">print (A) ...</span></code> statement. The omission
|
|
is made good by using a routine in the template library instead.
|
|
</p>
|
|
|
|
<p class="inwebparagraph">See test case <code class="display"><span class="extract">BIP-SayName</span></code>.
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">Section</span><span class="plain"> </span><span class="constant">2</span><span class="plain"> - </span><span class="identifier">Saying</span><span class="plain"> </span><span class="identifier">Names</span>
|
|
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">say</span><span class="plain"> </span><span class="identifier">a</span><span class="plain"> (</span><span class="identifier">something</span><span class="plain"> - </span><span class="identifier">object</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">phs_a</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">print</span><span class="plain"> (</span><span class="identifier">a</span><span class="plain">) {</span><span class="identifier">something</span><span class="plain">}; -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">say</span><span class="plain"> </span><span class="identifier">an</span><span class="plain"> (</span><span class="identifier">something</span><span class="plain"> - </span><span class="identifier">object</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">phs_a</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">print</span><span class="plain"> (</span><span class="identifier">a</span><span class="plain">) {</span><span class="identifier">something</span><span class="plain">}; -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">say</span><span class="plain"> </span><span class="identifier">A</span><span class="plain"> (</span><span class="identifier">something</span><span class="plain"> - </span><span class="identifier">object</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">phs_A</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">CIndefArt</span><span class="plain">({</span><span class="identifier">something</span><span class="plain">}); -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">say</span><span class="plain"> </span><span class="identifier">An</span><span class="plain"> (</span><span class="identifier">something</span><span class="plain"> - </span><span class="identifier">object</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">phs_A</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">CIndefArt</span><span class="plain">({</span><span class="identifier">something</span><span class="plain">}); -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">say</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> (</span><span class="identifier">something</span><span class="plain"> - </span><span class="identifier">object</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">phs_the</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">print</span><span class="plain"> (</span><span class="identifier">the</span><span class="plain">) {</span><span class="identifier">something</span><span class="plain">}; -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">say</span><span class="plain"> </span><span class="identifier">The</span><span class="plain"> (</span><span class="identifier">something</span><span class="plain"> - </span><span class="identifier">object</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">phs_The</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">print</span><span class="plain"> (</span><span class="identifier">The</span><span class="plain">) {</span><span class="identifier">something</span><span class="plain">}; -).</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP7"></a><b>§7. </b>Now some text substitutions which are the equivalent of escape characters.
|
|
(In double-quoted I6 text, the notation for a literal quotation mark is a
|
|
tilde <code class="display"><span class="extract">~</span></code>.) Note the use of the "-- running on" annotation, which tells Inform
|
|
that a text substitution should not cause a new-line.
|
|
</p>
|
|
|
|
<p class="inwebparagraph">See test case <code class="display"><span class="extract">BIP-SaySpecial</span></code>.
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">Section</span><span class="plain"> </span><span class="constant">3</span><span class="plain"> - </span><span class="identifier">Saying</span><span class="plain"> </span><span class="identifier">Special</span><span class="plain"> </span><span class="identifier">Characters</span>
|
|
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">say</span><span class="plain"> </span><span class="identifier">bracket</span><span class="plain"> -- </span><span class="identifier">running</span><span class="plain"> </span><span class="identifier">on</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">phs_bracket</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">print</span><span class="plain"> </span><span class="string">"["</span><span class="plain">; -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">say</span><span class="plain"> </span><span class="identifier">close</span><span class="plain"> </span><span class="identifier">bracket</span><span class="plain"> -- </span><span class="identifier">running</span><span class="plain"> </span><span class="identifier">on</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">phs_closebracket</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">print</span><span class="plain"> </span><span class="string">"]"</span><span class="plain">; -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">say</span><span class="plain"> </span><span class="identifier">apostrophe</span><span class="plain">/' -- </span><span class="identifier">running</span><span class="plain"> </span><span class="identifier">on</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">phs_apostrophe</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">print</span><span class="plain"> </span><span class="string">"'"</span><span class="plain">; -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">say</span><span class="plain"> </span><span class="identifier">quotation</span><span class="plain"> </span><span class="identifier">mark</span><span class="plain"> -- </span><span class="identifier">running</span><span class="plain"> </span><span class="identifier">on</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">phs_quotemark</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">print</span><span class="plain"> </span><span class="string">"~"</span><span class="plain">; -).</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP8"></a><b>§8. </b>For an explanation of the paragraph breaking algorithm, see the template
|
|
file "Printing.i6t".
|
|
</p>
|
|
|
|
<p class="inwebparagraph">See test case <code class="display"><span class="extract">BIP-SayParagraphing</span></code>.
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">Section</span><span class="plain"> </span><span class="constant">4</span><span class="plain"> - </span><span class="identifier">Saying</span><span class="plain"> </span><span class="identifier">Line</span><span class="plain"> </span><span class="identifier">and</span><span class="plain"> </span><span class="identifier">Paragraph</span><span class="plain"> </span><span class="identifier">Breaks</span>
|
|
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">say</span><span class="plain"> </span><span class="identifier">line</span><span class="plain"> </span><span class="identifier">break</span><span class="plain"> -- </span><span class="identifier">running</span><span class="plain"> </span><span class="identifier">on</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">phs_linebreak</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">new_line</span><span class="plain">; -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">say</span><span class="plain"> </span><span class="identifier">no</span><span class="plain"> </span><span class="identifier">line</span><span class="plain"> </span><span class="identifier">break</span><span class="plain"> -- </span><span class="identifier">running</span><span class="plain"> </span><span class="identifier">on</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">phs_nolinebreak</span><span class="plain">):</span>
|
|
<span class="identifier">do</span><span class="plain"> </span><span class="identifier">nothing</span><span class="plain">.</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">say</span><span class="plain"> </span><span class="identifier">conditional</span><span class="plain"> </span><span class="identifier">paragraph</span><span class="plain"> </span><span class="identifier">break</span><span class="plain"> -- </span><span class="identifier">running</span><span class="plain"> </span><span class="identifier">on</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">phs_condparabreak</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">DivideParagraphPoint</span><span class="plain">(); -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">say</span><span class="plain"> </span><span class="identifier">paragraph</span><span class="plain"> </span><span class="identifier">break</span><span class="plain"> -- </span><span class="identifier">running</span><span class="plain"> </span><span class="identifier">on</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">phs_parabreak</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">DivideParagraphPoint</span><span class="plain">(); </span><span class="identifier">new_line</span><span class="plain">; -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">say</span><span class="plain"> </span><span class="identifier">run</span><span class="plain"> </span><span class="identifier">paragraph</span><span class="plain"> </span><span class="identifier">on</span><span class="plain"> -- </span><span class="identifier">running</span><span class="plain"> </span><span class="identifier">on</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">phs_runparaon</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">RunParagraphOn</span><span class="plain">(); -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">if</span><span class="plain"> </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">paragraph</span><span class="plain"> </span><span class="identifier">break</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">pending</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_breakpending</span><span class="plain">):</span>
|
|
<span class="plain">(- (</span><span class="identifier">say__p</span><span class="plain">) -).</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP9"></a><b>§9. </b>Now for "[if ...]", which expands into a rather assembly-language-like
|
|
usage of <code class="display"><span class="extract">jump</span></code> statements, I6's form of goto. For instance, the text
|
|
"[if the score is 10]It's ten![otherwise]It's not ten, alas." compiles
|
|
thus:
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="reserved">if</span><span class="plain"> (~~(</span><span class="identifier">score</span><span class="plain"> == </span><span class="constant">10</span><span class="plain">)) </span><span class="reserved">jump</span><span class="plain"> </span><span class="identifier">L_Say3</span><span class="plain">;</span>
|
|
<span class="plain">...</span>
|
|
<span class="reserved">jump</span><span class="plain"> </span><span class="identifier">L_SayX2</span><span class="plain">; .</span><span class="identifier">L_Say3</span><span class="plain">;</span>
|
|
<span class="plain">...</span>
|
|
<span class="plain">.</span><span class="identifier">L_Say4</span><span class="plain">; .</span><span class="identifier">L_SayX2</span><span class="plain">;</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph">Though labels actually have local namespaces in I6 routines, we use
|
|
globally unique labels throughout the whole program: compiling the same
|
|
phrase again would involve say labels 5 and 6 and "say exit" label 3.
|
|
This example text demonstrates the reason we <code class="display"><span class="extract">jump</span></code> about, rather than
|
|
making use of <code class="display"><span class="extract">if... else...</span></code> and bracing groups of statements: it is legal
|
|
in I7 either to conclude with or to omit the "[end if]". (If statements
|
|
in I6 compile to jump instructions in any event, and on our virtual
|
|
machines there is no speed penalty for branches.) We also need the same
|
|
definitions to accommodate what amounts to a switch statement. The trickier
|
|
text "[if the score is 10]It's ten![otherwise if the score is 8]It's
|
|
eight?[otherwise]It's not ten, alas." comes out as:
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="reserved">if</span><span class="plain"> (~~(</span><span class="identifier">score</span><span class="plain"> == </span><span class="constant">10</span><span class="plain">)) </span><span class="reserved">jump</span><span class="plain"> </span><span class="identifier">L_Say5</span><span class="plain">;</span>
|
|
<span class="plain">...</span>
|
|
<span class="reserved">jump</span><span class="plain"> </span><span class="identifier">L_SayX3</span><span class="plain">; .</span><span class="identifier">L_Say5</span><span class="plain">; </span><span class="reserved">if</span><span class="plain"> (~~(</span><span class="identifier">score</span><span class="plain"> == </span><span class="constant">8</span><span class="plain">)) </span><span class="reserved">jump</span><span class="plain"> </span><span class="identifier">L_Say6</span><span class="plain">;</span>
|
|
<span class="plain">...</span>
|
|
<span class="reserved">jump</span><span class="plain"> </span><span class="identifier">L_SayX3</span><span class="plain">; .</span><span class="identifier">L_Say6</span><span class="plain">;</span>
|
|
<span class="plain">...</span>
|
|
<span class="plain">.</span><span class="identifier">L_Say7</span><span class="plain">; .</span><span class="identifier">L_SayX3</span><span class="plain">;</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph">In either form of the construct, control passes into at most one of the
|
|
pieces of text. The terminal labels (the two on the final line) are
|
|
automatically generated; often — when there is a simple "otherwise" or
|
|
"end if" to conclude the construct — they are not needed, but labels are
|
|
quick to process in I6, are soon discarded from I6's memory when not needed
|
|
any more, and compile no code.
|
|
</p>
|
|
|
|
<p class="inwebparagraph">We assume in each case that the next say label number to be free is always
|
|
the start of the next block, and that the next say exit label number is always
|
|
the one at the end of the current construct. This is true because Inform does
|
|
not allow "say if" to be nested.
|
|
</p>
|
|
|
|
<p class="inwebparagraph">See test case <code class="display"><span class="extract">BIP-SayIf</span></code>.
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">Section</span><span class="plain"> </span><span class="constant">5</span><span class="plain"> - </span><span class="identifier">Saying</span><span class="plain"> </span><span class="identifier">If</span><span class="plain"> </span><span class="identifier">and</span><span class="plain"> </span><span class="identifier">Otherwise</span>
|
|
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">say</span><span class="plain"> </span><span class="identifier">if</span><span class="plain"> (</span><span class="identifier">c</span><span class="plain"> - </span><span class="identifier">condition</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">phs_if</span><span class="plain">): (-</span>
|
|
<span class="identifier">if</span><span class="plain"> (~~({</span><span class="identifier">c</span><span class="plain">})) </span><span class="identifier">jump</span><span class="plain"> {-</span><span class="identifier">label</span><span class="plain">:</span><span class="identifier">Say</span><span class="plain">};</span>
|
|
<span class="plain">-).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">say</span><span class="plain"> </span><span class="identifier">unless</span><span class="plain"> (</span><span class="identifier">c</span><span class="plain"> - </span><span class="identifier">condition</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">phs_unless</span><span class="plain">): (-</span>
|
|
<span class="identifier">if</span><span class="plain"> ({</span><span class="identifier">c</span><span class="plain">}) </span><span class="identifier">jump</span><span class="plain"> {-</span><span class="identifier">label</span><span class="plain">:</span><span class="identifier">Say</span><span class="plain">};</span>
|
|
<span class="plain">-).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">say</span><span class="plain"> </span><span class="identifier">otherwise</span><span class="plain">/</span><span class="identifier">else</span><span class="plain"> </span><span class="identifier">if</span><span class="plain"> (</span><span class="identifier">c</span><span class="plain"> - </span><span class="identifier">condition</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">phs_elseif</span><span class="plain">): (-</span>
|
|
<span class="identifier">jump</span><span class="plain"> {-</span><span class="identifier">label</span><span class="plain">:</span><span class="identifier">SayX</span><span class="plain">}; .{-</span><span class="identifier">label</span><span class="plain">:</span><span class="identifier">Say</span><span class="plain">}{-</span><span class="identifier">counter</span><span class="plain">-</span><span class="identifier">up</span><span class="plain">:</span><span class="identifier">Say</span><span class="plain">}; </span><span class="identifier">if</span><span class="plain"> (~~({</span><span class="identifier">c</span><span class="plain">})) </span><span class="identifier">jump</span><span class="plain"> {-</span><span class="identifier">label</span><span class="plain">:</span><span class="identifier">Say</span><span class="plain">};</span>
|
|
<span class="plain">-).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">say</span><span class="plain"> </span><span class="identifier">otherwise</span><span class="plain">/</span><span class="identifier">else</span><span class="plain"> </span><span class="identifier">unless</span><span class="plain"> (</span><span class="identifier">c</span><span class="plain"> - </span><span class="identifier">condition</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">phs_elseunless</span><span class="plain">): (-</span>
|
|
<span class="identifier">jump</span><span class="plain"> {-</span><span class="identifier">label</span><span class="plain">:</span><span class="identifier">SayX</span><span class="plain">}; .{-</span><span class="identifier">label</span><span class="plain">:</span><span class="identifier">Say</span><span class="plain">}{-</span><span class="identifier">counter</span><span class="plain">-</span><span class="identifier">up</span><span class="plain">:</span><span class="identifier">Say</span><span class="plain">}; </span><span class="identifier">if</span><span class="plain"> ({</span><span class="identifier">c</span><span class="plain">}) </span><span class="identifier">jump</span><span class="plain"> {-</span><span class="identifier">label</span><span class="plain">:</span><span class="identifier">Say</span><span class="plain">};</span>
|
|
<span class="plain">-).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">say</span><span class="plain"> </span><span class="identifier">otherwise</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">phs_otherwise</span><span class="plain">): (-</span>
|
|
<span class="identifier">jump</span><span class="plain"> {-</span><span class="identifier">label</span><span class="plain">:</span><span class="identifier">SayX</span><span class="plain">}; .{-</span><span class="identifier">label</span><span class="plain">:</span><span class="identifier">Say</span><span class="plain">}{-</span><span class="identifier">counter</span><span class="plain">-</span><span class="identifier">up</span><span class="plain">:</span><span class="identifier">Say</span><span class="plain">};</span>
|
|
<span class="plain">-).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">say</span><span class="plain"> </span><span class="identifier">else</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">phs_otherwise</span><span class="plain">): (-</span>
|
|
<span class="identifier">jump</span><span class="plain"> {-</span><span class="identifier">label</span><span class="plain">:</span><span class="identifier">SayX</span><span class="plain">}; .{-</span><span class="identifier">label</span><span class="plain">:</span><span class="identifier">Say</span><span class="plain">}{-</span><span class="identifier">counter</span><span class="plain">-</span><span class="identifier">up</span><span class="plain">:</span><span class="identifier">Say</span><span class="plain">};</span>
|
|
<span class="plain">-).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">say</span><span class="plain"> </span><span class="identifier">end</span><span class="plain"> </span><span class="identifier">if</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">phs_endif</span><span class="plain">): (-</span>
|
|
<span class="plain">.{-</span><span class="identifier">label</span><span class="plain">:</span><span class="identifier">Say</span><span class="plain">}{-</span><span class="identifier">counter</span><span class="plain">-</span><span class="identifier">up</span><span class="plain">:</span><span class="identifier">Say</span><span class="plain">}; .{-</span><span class="identifier">label</span><span class="plain">:</span><span class="identifier">SayX</span><span class="plain">}{-</span><span class="identifier">counter</span><span class="plain">-</span><span class="identifier">up</span><span class="plain">:</span><span class="identifier">SayX</span><span class="plain">};</span>
|
|
<span class="plain">-).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">say</span><span class="plain"> </span><span class="identifier">end</span><span class="plain"> </span><span class="identifier">unless</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">phs_endunless</span><span class="plain">): (-</span>
|
|
<span class="plain">.{-</span><span class="identifier">label</span><span class="plain">:</span><span class="identifier">Say</span><span class="plain">}{-</span><span class="identifier">counter</span><span class="plain">-</span><span class="identifier">up</span><span class="plain">:</span><span class="identifier">Say</span><span class="plain">}; .{-</span><span class="identifier">label</span><span class="plain">:</span><span class="identifier">SayX</span><span class="plain">}{-</span><span class="identifier">counter</span><span class="plain">-</span><span class="identifier">up</span><span class="plain">:</span><span class="identifier">SayX</span><span class="plain">};</span>
|
|
<span class="plain">-).</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP10"></a><b>§10. </b>The other control structure: the random variations form of saying. This
|
|
part of the Inform design was in effect contributed by the community: it
|
|
reimplements a form of Jon Ingold's former extension Text Variations, which
|
|
itself built on code going back to the days of I6.
|
|
</p>
|
|
|
|
<p class="inwebparagraph">The head phrase has one of the most complicated definitions suppled with
|
|
Inform, but is actually documented fairly explicitly in the Extensions chapter
|
|
of "Writing with Inform", so we won't repeat all that here. Essentially it
|
|
uses its own allocated cell of storage in an array to remember a state between
|
|
uses, and compiles as a switch statement based on the current state.
|
|
</p>
|
|
|
|
<p class="inwebparagraph">See test case <code class="display"><span class="extract">BIP-SayOneOf</span></code>.
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">Section</span><span class="plain"> </span><span class="constant">6</span><span class="plain"> - </span><span class="identifier">Saying</span><span class="plain"> </span><span class="identifier">one</span><span class="plain"> </span><span class="identifier">of</span>
|
|
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">say</span><span class="plain"> </span><span class="identifier">one</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> -- </span><span class="identifier">beginning</span><span class="plain"> </span><span class="identifier">say_one_of</span><span class="plain"> (</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">phs_oneof</span><span class="plain">): (-</span>
|
|
<span class="plain">{-</span><span class="identifier">counter</span><span class="plain">-</span><span class="identifier">makes</span><span class="plain">-</span><span class="identifier">array</span><span class="plain">:</span><span class="identifier">say_one_of</span><span class="plain">}</span>
|
|
<span class="plain">{-</span><span class="identifier">counter</span><span class="plain">-</span><span class="identifier">makes</span><span class="plain">-</span><span class="identifier">array</span><span class="plain">:</span><span class="identifier">say_one_flag</span><span class="plain">}</span>
|
|
<span class="identifier">if</span><span class="plain"> ({-</span><span class="identifier">counter</span><span class="plain">-</span><span class="identifier">storage</span><span class="plain">:</span><span class="identifier">say_one_flag</span><span class="plain">}-->{-</span><span class="identifier">counter</span><span class="plain">:</span><span class="identifier">say_one_flag</span><span class="plain">} == </span><span class="identifier">false</span><span class="plain">) {</span>
|
|
<span class="plain">{-</span><span class="identifier">counter</span><span class="plain">-</span><span class="identifier">storage</span><span class="plain">:</span><span class="identifier">say_one_of</span><span class="plain">}-->{-</span><span class="identifier">counter</span><span class="plain">:</span><span class="identifier">say_one_of</span><span class="plain">} = {-</span><span class="identifier">final</span><span class="plain">-</span><span class="identifier">segment</span><span class="plain">-</span><span class="identifier">marker</span><span class="plain">}({-</span><span class="identifier">counter</span><span class="plain">-</span><span class="identifier">storage</span><span class="plain">:</span><span class="identifier">say_one_of</span><span class="plain">}-->{-</span><span class="identifier">counter</span><span class="plain">:</span><span class="identifier">say_one_of</span><span class="plain">}, {-</span><span class="identifier">segment</span><span class="plain">-</span><span class="identifier">count</span><span class="plain">});</span>
|
|
<span class="plain">{-</span><span class="identifier">counter</span><span class="plain">-</span><span class="identifier">storage</span><span class="plain">:</span><span class="identifier">say_one_flag</span><span class="plain">}-->{-</span><span class="identifier">counter</span><span class="plain">:</span><span class="identifier">say_one_flag</span><span class="plain">} = </span><span class="identifier">true</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
<span class="identifier">if</span><span class="plain"> (</span><span class="identifier">say__comp</span><span class="plain"> == </span><span class="identifier">false</span><span class="plain">) {-</span><span class="identifier">counter</span><span class="plain">-</span><span class="identifier">storage</span><span class="plain">:</span><span class="identifier">say_one_flag</span><span class="plain">}-->{-</span><span class="identifier">counter</span><span class="plain">:</span><span class="identifier">say_one_flag</span><span class="plain">}{-</span><span class="identifier">counter</span><span class="plain">-</span><span class="identifier">up</span><span class="plain">:</span><span class="identifier">say_one_flag</span><span class="plain">} = </span><span class="identifier">false</span><span class="plain">;</span>
|
|
<span class="identifier">switch</span><span class="plain"> (({-</span><span class="identifier">counter</span><span class="plain">-</span><span class="identifier">storage</span><span class="plain">:</span><span class="identifier">say_one_of</span><span class="plain">}-->{-</span><span class="identifier">counter</span><span class="plain">:</span><span class="identifier">say_one_of</span><span class="plain">}{-</span><span class="identifier">counter</span><span class="plain">-</span><span class="identifier">up</span><span class="plain">:</span><span class="identifier">say_one_of</span><span class="plain">})%({-</span><span class="identifier">segment</span><span class="plain">-</span><span class="identifier">count</span><span class="plain">}+1)-1)</span>
|
|
<span class="plain">{-</span><span class="identifier">open</span><span class="plain">-</span><span class="identifier">brace</span><span class="plain">}</span>
|
|
<span class="constant">0</span><span class="plain">: -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">say</span><span class="plain"> </span><span class="identifier">or</span><span class="plain"> -- </span><span class="identifier">continuing</span><span class="plain"> </span><span class="identifier">say_one_of</span><span class="plain"> (</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">phs_or</span><span class="plain">):</span>
|
|
<span class="plain">(- @</span><span class="identifier">nop</span><span class="plain">; {-</span><span class="identifier">segment</span><span class="plain">-</span><span class="identifier">count</span><span class="plain">}: -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">say</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">random</span><span class="plain"> -- </span><span class="identifier">ending</span><span class="plain"> </span><span class="identifier">say_one_of</span><span class="plain"> </span><span class="identifier">with</span><span class="plain"> </span><span class="identifier">marker</span><span class="plain"> </span><span class="identifier">I7_SOO_RAN</span><span class="plain"> (</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">phs_random</span><span class="plain">):</span>
|
|
<span class="plain">(- {-</span><span class="identifier">close</span><span class="plain">-</span><span class="identifier">brace</span><span class="plain">} -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">say</span><span class="plain"> </span><span class="identifier">purely</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">random</span><span class="plain"> -- </span><span class="identifier">ending</span><span class="plain"> </span><span class="identifier">say_one_of</span><span class="plain"> </span><span class="identifier">with</span><span class="plain"> </span><span class="identifier">marker</span><span class="plain"> </span><span class="identifier">I7_SOO_PAR</span><span class="plain"> (</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">phs_purelyrandom</span><span class="plain">):</span>
|
|
<span class="plain">(- {-</span><span class="identifier">close</span><span class="plain">-</span><span class="identifier">brace</span><span class="plain">} -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">say</span><span class="plain"> </span><span class="identifier">then</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">random</span><span class="plain"> -- </span><span class="identifier">ending</span><span class="plain"> </span><span class="identifier">say_one_of</span><span class="plain"> </span><span class="identifier">with</span><span class="plain"> </span><span class="identifier">marker</span><span class="plain"> </span><span class="identifier">I7_SOO_TRAN</span><span class="plain"> (</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">phs_thenrandom</span><span class="plain">):</span>
|
|
<span class="plain">(- {-</span><span class="identifier">close</span><span class="plain">-</span><span class="identifier">brace</span><span class="plain">} -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">say</span><span class="plain"> </span><span class="identifier">then</span><span class="plain"> </span><span class="identifier">purely</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">random</span><span class="plain"> -- </span><span class="identifier">ending</span><span class="plain"> </span><span class="identifier">say_one_of</span><span class="plain"> </span><span class="identifier">with</span><span class="plain"> </span><span class="identifier">marker</span><span class="plain"> </span><span class="identifier">I7_SOO_TPAR</span><span class="plain"> (</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">phs_thenpurelyrandom</span><span class="plain">):</span>
|
|
<span class="plain">(- {-</span><span class="identifier">close</span><span class="plain">-</span><span class="identifier">brace</span><span class="plain">} -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">say</span><span class="plain"> </span><span class="identifier">sticky</span><span class="plain"> </span><span class="identifier">random</span><span class="plain"> -- </span><span class="identifier">ending</span><span class="plain"> </span><span class="identifier">say_one_of</span><span class="plain"> </span><span class="identifier">with</span><span class="plain"> </span><span class="identifier">marker</span><span class="plain"> </span><span class="identifier">I7_SOO_STI</span><span class="plain"> (</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">phs_sticky</span><span class="plain">):</span>
|
|
<span class="plain">(- {-</span><span class="identifier">close</span><span class="plain">-</span><span class="identifier">brace</span><span class="plain">} -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">say</span><span class="plain"> </span><span class="identifier">as</span><span class="plain"> </span><span class="identifier">decreasingly</span><span class="plain"> </span><span class="identifier">likely</span><span class="plain"> </span><span class="identifier">outcomes</span><span class="plain"> -- </span><span class="identifier">ending</span><span class="plain"> </span><span class="identifier">say_one_of</span><span class="plain"> </span><span class="identifier">with</span><span class="plain"> </span><span class="identifier">marker</span><span class="plain"> </span><span class="identifier">I7_SOO_TAP</span><span class="plain"> (</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">phs_decreasing</span><span class="plain">):</span>
|
|
<span class="plain">(- {-</span><span class="identifier">close</span><span class="plain">-</span><span class="identifier">brace</span><span class="plain">} -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">say</span><span class="plain"> </span><span class="identifier">in</span><span class="plain"> </span><span class="identifier">random</span><span class="plain"> </span><span class="identifier">order</span><span class="plain"> -- </span><span class="identifier">ending</span><span class="plain"> </span><span class="identifier">say_one_of</span><span class="plain"> </span><span class="identifier">with</span><span class="plain"> </span><span class="identifier">marker</span><span class="plain"> </span><span class="identifier">I7_SOO_SHU</span><span class="plain"> (</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">phs_order</span><span class="plain">):</span>
|
|
<span class="plain">(- {-</span><span class="identifier">close</span><span class="plain">-</span><span class="identifier">brace</span><span class="plain">} -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">say</span><span class="plain"> </span><span class="identifier">cycling</span><span class="plain"> -- </span><span class="identifier">ending</span><span class="plain"> </span><span class="identifier">say_one_of</span><span class="plain"> </span><span class="identifier">with</span><span class="plain"> </span><span class="identifier">marker</span><span class="plain"> </span><span class="identifier">I7_SOO_CYC</span><span class="plain"> (</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">phs_cycling</span><span class="plain">):</span>
|
|
<span class="plain">(- {-</span><span class="identifier">close</span><span class="plain">-</span><span class="identifier">brace</span><span class="plain">} -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">say</span><span class="plain"> </span><span class="identifier">stopping</span><span class="plain"> -- </span><span class="identifier">ending</span><span class="plain"> </span><span class="identifier">say_one_of</span><span class="plain"> </span><span class="identifier">with</span><span class="plain"> </span><span class="identifier">marker</span><span class="plain"> </span><span class="identifier">I7_SOO_STOP</span><span class="plain"> (</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">phs_stopping</span><span class="plain">):</span>
|
|
<span class="plain">(- {-</span><span class="identifier">close</span><span class="plain">-</span><span class="identifier">brace</span><span class="plain">} -).</span>
|
|
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">say</span><span class="plain"> </span><span class="identifier">first</span><span class="plain"> </span><span class="identifier">time</span><span class="plain"> -- </span><span class="identifier">beginning</span><span class="plain"> </span><span class="identifier">say_first_time</span><span class="plain"> (</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">phs_firsttime</span><span class="plain">):</span>
|
|
<span class="plain">(- {-</span><span class="identifier">counter</span><span class="plain">-</span><span class="identifier">makes</span><span class="plain">-</span><span class="identifier">array</span><span class="plain">:</span><span class="identifier">say_first_time</span><span class="plain">}</span>
|
|
<span class="identifier">if</span><span class="plain"> ((</span><span class="identifier">say__comp</span><span class="plain"> == </span><span class="identifier">false</span><span class="plain">) && (({-</span><span class="identifier">counter</span><span class="plain">-</span><span class="identifier">storage</span><span class="plain">:</span><span class="identifier">say_first_time</span><span class="plain">}-->{-</span><span class="identifier">counter</span><span class="plain">:</span><span class="identifier">say_first_time</span><span class="plain">}{-</span><span class="identifier">counter</span><span class="plain">-</span><span class="identifier">up</span><span class="plain">:</span><span class="identifier">say_first_time</span><span class="plain">})++ == </span><span class="constant">0</span><span class="plain">)) {-</span><span class="identifier">open</span><span class="plain">-</span><span class="identifier">brace</span><span class="plain">}</span>
|
|
<span class="plain">-).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">say</span><span class="plain"> </span><span class="identifier">only</span><span class="plain"> -- </span><span class="identifier">ending</span><span class="plain"> </span><span class="identifier">say_first_time</span><span class="plain"> (</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">phs_firsttime</span><span class="plain">):</span>
|
|
<span class="plain">(- {-</span><span class="identifier">close</span><span class="plain">-</span><span class="identifier">brace</span><span class="plain">} -).</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP11"></a><b>§11. </b>Now some visual effects, which may or may not be rendered the way the user
|
|
hopes: that's partly up to the virtual machine, unfortunately.
|
|
</p>
|
|
|
|
<p class="inwebparagraph">See test case <code class="display"><span class="extract">BIP-SayOneOf</span></code>, though since <code class="display"><span class="extract">intest</span></code> runs on plain text only,
|
|
you may need to run this in the Inform application to be convinced.
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">Section</span><span class="plain"> </span><span class="constant">7</span><span class="plain"> - </span><span class="identifier">Saying</span><span class="plain"> </span><span class="identifier">Fonts</span><span class="plain"> </span><span class="identifier">and</span><span class="plain"> </span><span class="identifier">Visual</span><span class="plain"> </span><span class="identifier">Effects</span>
|
|
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">say</span><span class="plain"> </span><span class="identifier">bold</span><span class="plain"> </span><span class="identifier">type</span><span class="plain"> -- </span><span class="identifier">running</span><span class="plain"> </span><span class="identifier">on</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">phs_bold</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">style</span><span class="plain"> </span><span class="identifier">bold</span><span class="plain">; -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">say</span><span class="plain"> </span><span class="identifier">italic</span><span class="plain"> </span><span class="identifier">type</span><span class="plain"> -- </span><span class="identifier">running</span><span class="plain"> </span><span class="identifier">on</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">phs_italic</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">style</span><span class="plain"> </span><span class="identifier">underline</span><span class="plain">; -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">say</span><span class="plain"> </span><span class="identifier">roman</span><span class="plain"> </span><span class="identifier">type</span><span class="plain"> -- </span><span class="identifier">running</span><span class="plain"> </span><span class="identifier">on</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">phs_roman</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">style</span><span class="plain"> </span><span class="identifier">roman</span><span class="plain">; -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">say</span><span class="plain"> </span><span class="identifier">fixed</span><span class="plain"> </span><span class="identifier">letter</span><span class="plain"> </span><span class="identifier">spacing</span><span class="plain"> -- </span><span class="identifier">running</span><span class="plain"> </span><span class="identifier">on</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">phs_fixedspacing</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">font</span><span class="plain"> </span><span class="identifier">off</span><span class="plain">; -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">say</span><span class="plain"> </span><span class="identifier">variable</span><span class="plain"> </span><span class="identifier">letter</span><span class="plain"> </span><span class="identifier">spacing</span><span class="plain"> -- </span><span class="identifier">running</span><span class="plain"> </span><span class="identifier">on</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">phs_varspacing</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">font</span><span class="plain"> </span><span class="identifier">on</span><span class="plain">; -).</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP12"></a><b>§12. </b>These are lists in the sense of the "list of" kind of value constructor, and
|
|
the first two phrases here might list any values, not just objects.
|
|
</p>
|
|
|
|
<p class="inwebparagraph">See test case <code class="display"><span class="extract">BIP-SayLists</span></code>.
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">Section</span><span class="plain"> </span><span class="constant">8</span><span class="plain"> - </span><span class="identifier">Saying</span><span class="plain"> </span><span class="identifier">Lists</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">Values</span>
|
|
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">say</span><span class="plain"> (</span><span class="identifier">L</span><span class="plain"> - </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">list</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">values</span><span class="plain">) </span><span class="identifier">in</span><span class="plain"> </span><span class="identifier">brace</span><span class="plain"> </span><span class="identifier">notation</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">phs_listbraced</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">LIST_OF_TY_Say</span><span class="plain">({-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">L</span><span class="plain">}, </span><span class="constant">1</span><span class="plain">); -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">say</span><span class="plain"> (</span><span class="identifier">L</span><span class="plain"> - </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">list</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">objects</span><span class="plain">) </span><span class="identifier">with</span><span class="plain"> </span><span class="identifier">definite</span><span class="plain"> </span><span class="identifier">articles</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">phs_listdef</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">LIST_OF_TY_Say</span><span class="plain">({-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">L</span><span class="plain">}, </span><span class="constant">2</span><span class="plain">); -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">say</span><span class="plain"> (</span><span class="identifier">L</span><span class="plain"> - </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">list</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">objects</span><span class="plain">) </span><span class="identifier">with</span><span class="plain"> </span><span class="identifier">indefinite</span><span class="plain"> </span><span class="identifier">articles</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">phs_listindef</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">LIST_OF_TY_Say</span><span class="plain">({-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">L</span><span class="plain">}, </span><span class="constant">3</span><span class="plain">); -).</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP13"></a><b>§13. Variables. </b>The "now" phrase can do an extraordinary range of things, and is more or
|
|
less a genie granting one wish.
|
|
</p>
|
|
|
|
<p class="inwebparagraph">The "whether or not" phrase exists only to convert a condition to a value,
|
|
and is needed because I7 does not silently cast from one to the other in
|
|
the way that C would.
|
|
</p>
|
|
|
|
<p class="inwebparagraph">See test case <code class="display"><span class="extract">BIP-Now</span></code>.
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">Chapter</span><span class="plain"> </span><span class="constant">2</span><span class="plain"> - </span><span class="identifier">Conditions</span><span class="plain"> </span><span class="identifier">and</span><span class="plain"> </span><span class="identifier">Variables</span>
|
|
|
|
<span class="identifier">Section</span><span class="plain"> </span><span class="constant">1</span><span class="plain"> - </span><span class="identifier">Conditions</span>
|
|
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">now</span><span class="plain"> (</span><span class="identifier">cn</span><span class="plain"> - </span><span class="identifier">condition</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_now</span><span class="plain">):</span>
|
|
<span class="plain">(- {</span><span class="identifier">cn</span><span class="plain">} -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">what</span><span class="plain"> </span><span class="identifier">truth</span><span class="plain"> </span><span class="identifier">state</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">whether</span><span class="plain"> </span><span class="identifier">or</span><span class="plain"> </span><span class="identifier">not</span><span class="plain"> (</span><span class="identifier">C</span><span class="plain"> - </span><span class="identifier">condition</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_whether</span><span class="plain">):</span>
|
|
<span class="plain">(- ({</span><span class="identifier">C</span><span class="plain">}) -).</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP14"></a><b>§14. </b>Assignment is probably the most difficult thing the type-checker has to
|
|
cope with, since "let" has to work when applied to both unknown names (it
|
|
creates a new variable) and existing ones (kind of value permitting). There
|
|
are also four different ways to create with "let", and two to use
|
|
existing variables. Note that the "given by" forms are not strictly
|
|
speaking assignments at all; the value placed in <code class="display"><span class="extract">t</span></code> is found by solving
|
|
the equation <code class="display"><span class="extract">Q</span></code>. This does require special typechecking, but of a
|
|
different kind to that requested by "(assignment operation)". All of which
|
|
makes the "To let" section here only slightly shorter than John Galsworthy's
|
|
Forsyte novel of the same name.
|
|
</p>
|
|
|
|
<p class="inwebparagraph">See test case <code class="display"><span class="extract">BIP-Let</span></code>.
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">Section</span><span class="plain"> </span><span class="constant">2</span><span class="plain"> - </span><span class="identifier">Assigning</span><span class="plain"> </span><span class="identifier">Temporary</span><span class="plain"> </span><span class="identifier">Variables</span>
|
|
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">let</span><span class="plain"> (</span><span class="identifier">t</span><span class="plain"> - </span><span class="identifier">nonexisting</span><span class="plain"> </span><span class="identifier">variable</span><span class="plain">) </span><span class="identifier">be</span><span class="plain"> (</span><span class="identifier">u</span><span class="plain"> - </span><span class="identifier">value</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">assignment</span><span class="plain"> </span><span class="identifier">operation</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_let</span><span class="plain">): (-</span>
|
|
<span class="plain">{-</span><span class="identifier">unprotect</span><span class="plain">:</span><span class="identifier">t</span><span class="plain">}</span>
|
|
<span class="plain">{-</span><span class="identifier">copy</span><span class="plain">:</span><span class="identifier">t</span><span class="plain">:</span><span class="identifier">u</span><span class="plain">}</span>
|
|
<span class="plain">-).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">let</span><span class="plain"> (</span><span class="identifier">t</span><span class="plain"> - </span><span class="identifier">nonexisting</span><span class="plain"> </span><span class="identifier">variable</span><span class="plain">) </span><span class="identifier">be</span><span class="plain"> (</span><span class="identifier">u</span><span class="plain"> - </span><span class="identifier">name</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">kind</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">value</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">assignment</span><span class="plain"> </span><span class="identifier">operation</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_letdefault</span><span class="plain">): (-</span>
|
|
<span class="plain">{-</span><span class="identifier">unprotect</span><span class="plain">:</span><span class="identifier">t</span><span class="plain">}</span>
|
|
<span class="plain">{-</span><span class="identifier">initialise</span><span class="plain">:</span><span class="identifier">t</span><span class="plain">}</span>
|
|
<span class="plain">-).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">let</span><span class="plain"> (</span><span class="identifier">t</span><span class="plain"> - </span><span class="identifier">nonexisting</span><span class="plain"> </span><span class="identifier">variable</span><span class="plain">) </span><span class="identifier">be</span><span class="plain"> (</span><span class="identifier">u</span><span class="plain"> - </span><span class="identifier">description</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">relations</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">values</span>
|
|
<span class="identifier">of</span><span class="plain"> </span><span class="identifier">kind</span><span class="plain"> </span><span class="identifier">K</span><span class="plain"> </span><span class="identifier">to</span><span class="plain"> </span><span class="identifier">values</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">kind</span><span class="plain"> </span><span class="identifier">L</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">assignment</span><span class="plain"> </span><span class="identifier">operation</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_letrelation</span><span class="plain">): (-</span>
|
|
<span class="plain">{-</span><span class="identifier">unprotect</span><span class="plain">:</span><span class="identifier">t</span><span class="plain">}</span>
|
|
<span class="plain">{-</span><span class="identifier">initialise</span><span class="plain">:</span><span class="identifier">t</span><span class="plain">}</span>
|
|
<span class="plain">{-</span><span class="identifier">now</span><span class="plain">-</span><span class="identifier">matches</span><span class="plain">-</span><span class="identifier">description</span><span class="plain">:</span><span class="identifier">t</span><span class="plain">:</span><span class="identifier">u</span><span class="plain">};</span>
|
|
<span class="plain">-).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">let</span><span class="plain"> (</span><span class="identifier">t</span><span class="plain"> - </span><span class="identifier">nonexisting</span><span class="plain"> </span><span class="identifier">variable</span><span class="plain">) </span><span class="identifier">be</span><span class="plain"> </span><span class="identifier">given</span><span class="plain"> </span><span class="identifier">by</span><span class="plain"> (</span><span class="identifier">Q</span><span class="plain"> - </span><span class="identifier">equation</span><span class="plain"> </span><span class="identifier">name</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_letequation</span><span class="plain">): (-</span>
|
|
<span class="plain">{-</span><span class="identifier">unprotect</span><span class="plain">:</span><span class="identifier">t</span><span class="plain">}</span>
|
|
<span class="plain">{-</span><span class="identifier">primitive</span><span class="plain">-</span><span class="identifier">definition</span><span class="plain">:</span><span class="identifier">solve</span><span class="plain">-</span><span class="identifier">equation</span><span class="plain">};</span>
|
|
<span class="plain">-).</span>
|
|
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">let</span><span class="plain"> (</span><span class="identifier">t</span><span class="plain"> - </span><span class="identifier">existing</span><span class="plain"> </span><span class="identifier">variable</span><span class="plain">) </span><span class="identifier">be</span><span class="plain"> (</span><span class="identifier">u</span><span class="plain"> - </span><span class="identifier">value</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">assignment</span><span class="plain"> </span><span class="identifier">operation</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_let</span><span class="plain">): (-</span>
|
|
<span class="plain">{-</span><span class="identifier">copy</span><span class="plain">:</span><span class="identifier">t</span><span class="plain">:</span><span class="identifier">u</span><span class="plain">}</span>
|
|
<span class="plain">-).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">let</span><span class="plain"> (</span><span class="identifier">t</span><span class="plain"> - </span><span class="identifier">existing</span><span class="plain"> </span><span class="identifier">variable</span><span class="plain">) </span><span class="identifier">be</span><span class="plain"> </span><span class="identifier">given</span><span class="plain"> </span><span class="identifier">by</span><span class="plain"> (</span><span class="identifier">Q</span><span class="plain"> - </span><span class="identifier">equation</span><span class="plain"> </span><span class="identifier">name</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_letequation</span><span class="plain">): (-</span>
|
|
<span class="plain">{-</span><span class="identifier">primitive</span><span class="plain">-</span><span class="identifier">definition</span><span class="plain">:</span><span class="identifier">solve</span><span class="plain">-</span><span class="identifier">equation</span><span class="plain">};</span>
|
|
<span class="plain">-).</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP15"></a><b>§15. </b>It is not explicit in the following definitions that Inform should typecheck
|
|
that the values held by these storage objects can be incremented or decremented
|
|
(as an object, say, cannot, but a number can): Inform nevertheless contains
|
|
code which does this.
|
|
</p>
|
|
|
|
<p class="inwebparagraph">See test case <code class="display"><span class="extract">BIP-Increase</span></code>.
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">Section</span><span class="plain"> </span><span class="constant">3</span><span class="plain"> - </span><span class="identifier">Increase</span><span class="plain"> </span><span class="identifier">and</span><span class="plain"> </span><span class="identifier">Decrease</span>
|
|
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">increase</span><span class="plain"> (</span><span class="identifier">S</span><span class="plain"> - </span><span class="identifier">storage</span><span class="plain">) </span><span class="identifier">by</span><span class="plain"> (</span><span class="identifier">w</span><span class="plain"> - </span><span class="identifier">value</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">assignment</span><span class="plain"> </span><span class="identifier">operation</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_increase</span><span class="plain">): (-</span>
|
|
<span class="plain">{-</span><span class="identifier">copy</span><span class="plain">:</span><span class="identifier">S</span><span class="plain">:+</span><span class="identifier">w</span><span class="plain">};</span>
|
|
<span class="plain">-).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decrease</span><span class="plain"> (</span><span class="identifier">S</span><span class="plain"> - </span><span class="identifier">storage</span><span class="plain">) </span><span class="identifier">by</span><span class="plain"> (</span><span class="identifier">w</span><span class="plain"> - </span><span class="identifier">value</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">assignment</span><span class="plain"> </span><span class="identifier">operation</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_decrease</span><span class="plain">): (-</span>
|
|
<span class="plain">{-</span><span class="identifier">copy</span><span class="plain">:</span><span class="identifier">S</span><span class="plain">:-</span><span class="identifier">w</span><span class="plain">};</span>
|
|
<span class="plain">-).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">increment</span><span class="plain"> (</span><span class="identifier">S</span><span class="plain"> - </span><span class="identifier">storage</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_increment</span><span class="plain">): (-</span>
|
|
<span class="plain">{-</span><span class="identifier">copy</span><span class="plain">:</span><span class="identifier">S</span><span class="plain">:+};</span>
|
|
<span class="plain">-).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decrement</span><span class="plain"> (</span><span class="identifier">S</span><span class="plain"> - </span><span class="identifier">storage</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_decrement</span><span class="plain">): (-</span>
|
|
<span class="plain">{-</span><span class="identifier">copy</span><span class="plain">:</span><span class="identifier">S</span><span class="plain">:-};</span>
|
|
<span class="plain">-).</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP16"></a><b>§16. Arithmetic. </b>There are nine arithmetic operations, internally numbered 0 upwards, and
|
|
given verbal forms below. These are handled unusually in the type-checker
|
|
because they need to be more polymorphic than most phrases: Inform uses
|
|
dimension-checking to determine the kind of value resulting. (Thus a
|
|
height times a number is another height, and so on.)
|
|
</p>
|
|
|
|
<p class="inwebparagraph">The totalling code (12) is not structly to do with arithmetic in the same
|
|
way, but it's needed to flag the phrase for the Inform typechecker's special
|
|
attention.
|
|
</p>
|
|
|
|
<p class="inwebparagraph">See test case <code class="display"><span class="extract">BIP-ArithmeticOperations</span></code>.
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">Chapter</span><span class="plain"> </span><span class="constant">2</span><span class="plain"> - </span><span class="identifier">Arithmetic</span>
|
|
|
|
<span class="identifier">Section</span><span class="plain"> </span><span class="constant">1</span><span class="plain"> - </span><span class="identifier">Arithmetic</span><span class="plain"> </span><span class="identifier">Operations</span>
|
|
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">which</span><span class="plain"> </span><span class="identifier">arithmetic</span><span class="plain"> </span><span class="identifier">value</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> (</span><span class="identifier">X</span><span class="plain"> - </span><span class="identifier">arithmetic</span><span class="plain"> </span><span class="identifier">value</span><span class="plain">) + (</span><span class="identifier">Y</span><span class="plain"> - </span><span class="identifier">arithmetic</span><span class="plain"> </span><span class="identifier">value</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">arithmetic</span><span class="plain"> </span><span class="identifier">operation</span><span class="plain"> </span><span class="constant">0</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_plus</span><span class="plain">):</span>
|
|
<span class="plain">(- ({-</span><span class="identifier">arithmetic</span><span class="plain">-</span><span class="identifier">operation</span><span class="plain">:</span><span class="identifier">X</span><span class="plain">:</span><span class="identifier">Y</span><span class="plain">}) -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">which</span><span class="plain"> </span><span class="identifier">arithmetic</span><span class="plain"> </span><span class="identifier">value</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> (</span><span class="identifier">X</span><span class="plain"> - </span><span class="identifier">arithmetic</span><span class="plain"> </span><span class="identifier">value</span><span class="plain">) </span><span class="identifier">plus</span><span class="plain"> (</span><span class="identifier">Y</span><span class="plain"> - </span><span class="identifier">arithmetic</span><span class="plain"> </span><span class="identifier">value</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">arithmetic</span><span class="plain"> </span><span class="identifier">operation</span><span class="plain"> </span><span class="constant">0</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_plus</span><span class="plain">):</span>
|
|
<span class="plain">(- ({-</span><span class="identifier">arithmetic</span><span class="plain">-</span><span class="identifier">operation</span><span class="plain">:</span><span class="identifier">X</span><span class="plain">:</span><span class="identifier">Y</span><span class="plain">}) -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">which</span><span class="plain"> </span><span class="identifier">arithmetic</span><span class="plain"> </span><span class="identifier">value</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> (</span><span class="identifier">X</span><span class="plain"> - </span><span class="identifier">arithmetic</span><span class="plain"> </span><span class="identifier">value</span><span class="plain">) - (</span><span class="identifier">Y</span><span class="plain"> - </span><span class="identifier">arithmetic</span><span class="plain"> </span><span class="identifier">value</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">arithmetic</span><span class="plain"> </span><span class="identifier">operation</span><span class="plain"> </span><span class="constant">1</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_minus</span><span class="plain">):</span>
|
|
<span class="plain">(- ({-</span><span class="identifier">arithmetic</span><span class="plain">-</span><span class="identifier">operation</span><span class="plain">:</span><span class="identifier">X</span><span class="plain">:</span><span class="identifier">Y</span><span class="plain">}) -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">which</span><span class="plain"> </span><span class="identifier">arithmetic</span><span class="plain"> </span><span class="identifier">value</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> (</span><span class="identifier">X</span><span class="plain"> - </span><span class="identifier">arithmetic</span><span class="plain"> </span><span class="identifier">value</span><span class="plain">) </span><span class="identifier">minus</span><span class="plain"> (</span><span class="identifier">Y</span><span class="plain"> - </span><span class="identifier">arithmetic</span><span class="plain"> </span><span class="identifier">value</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">arithmetic</span><span class="plain"> </span><span class="identifier">operation</span><span class="plain"> </span><span class="constant">1</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_minus</span><span class="plain">):</span>
|
|
<span class="plain">(- ({-</span><span class="identifier">arithmetic</span><span class="plain">-</span><span class="identifier">operation</span><span class="plain">:</span><span class="identifier">X</span><span class="plain">:</span><span class="identifier">Y</span><span class="plain">}) -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">which</span><span class="plain"> </span><span class="identifier">arithmetic</span><span class="plain"> </span><span class="identifier">value</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> (</span><span class="identifier">X</span><span class="plain"> - </span><span class="identifier">arithmetic</span><span class="plain"> </span><span class="identifier">value</span><span class="plain">) * (</span><span class="identifier">Y</span><span class="plain"> - </span><span class="identifier">arithmetic</span><span class="plain"> </span><span class="identifier">value</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">arithmetic</span><span class="plain"> </span><span class="identifier">operation</span><span class="plain"> </span><span class="constant">2</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_times</span><span class="plain">):</span>
|
|
<span class="plain">(- ({-</span><span class="identifier">arithmetic</span><span class="plain">-</span><span class="identifier">operation</span><span class="plain">:</span><span class="identifier">X</span><span class="plain">:</span><span class="identifier">Y</span><span class="plain">}) -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">which</span><span class="plain"> </span><span class="identifier">arithmetic</span><span class="plain"> </span><span class="identifier">value</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> (</span><span class="identifier">X</span><span class="plain"> - </span><span class="identifier">arithmetic</span><span class="plain"> </span><span class="identifier">value</span><span class="plain">) </span><span class="identifier">times</span><span class="plain"> (</span><span class="identifier">Y</span><span class="plain"> - </span><span class="identifier">arithmetic</span><span class="plain"> </span><span class="identifier">value</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">arithmetic</span><span class="plain"> </span><span class="identifier">operation</span><span class="plain"> </span><span class="constant">2</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_times</span><span class="plain">):</span>
|
|
<span class="plain">(- ({-</span><span class="identifier">arithmetic</span><span class="plain">-</span><span class="identifier">operation</span><span class="plain">:</span><span class="identifier">X</span><span class="plain">:</span><span class="identifier">Y</span><span class="plain">}) -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">which</span><span class="plain"> </span><span class="identifier">arithmetic</span><span class="plain"> </span><span class="identifier">value</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> (</span><span class="identifier">X</span><span class="plain"> - </span><span class="identifier">arithmetic</span><span class="plain"> </span><span class="identifier">value</span><span class="plain">) </span><span class="identifier">multiplied</span><span class="plain"> </span><span class="identifier">by</span><span class="plain"> (</span><span class="identifier">Y</span><span class="plain"> - </span><span class="identifier">arithmetic</span><span class="plain"> </span><span class="identifier">value</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">arithmetic</span><span class="plain"> </span><span class="identifier">operation</span><span class="plain"> </span><span class="constant">2</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_times</span><span class="plain">):</span>
|
|
<span class="plain">(- ({-</span><span class="identifier">arithmetic</span><span class="plain">-</span><span class="identifier">operation</span><span class="plain">:</span><span class="identifier">X</span><span class="plain">:</span><span class="identifier">Y</span><span class="plain">}) -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">which</span><span class="plain"> </span><span class="identifier">arithmetic</span><span class="plain"> </span><span class="identifier">value</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> (</span><span class="identifier">X</span><span class="plain"> - </span><span class="identifier">arithmetic</span><span class="plain"> </span><span class="identifier">value</span><span class="plain">) / (</span><span class="identifier">Y</span><span class="plain"> - </span><span class="identifier">arithmetic</span><span class="plain"> </span><span class="identifier">value</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">arithmetic</span><span class="plain"> </span><span class="identifier">operation</span><span class="plain"> </span><span class="constant">3</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_divide</span><span class="plain">):</span>
|
|
<span class="plain">(- ({-</span><span class="identifier">arithmetic</span><span class="plain">-</span><span class="identifier">operation</span><span class="plain">:</span><span class="identifier">X</span><span class="plain">:</span><span class="identifier">Y</span><span class="plain">}) -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">which</span><span class="plain"> </span><span class="identifier">arithmetic</span><span class="plain"> </span><span class="identifier">value</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> (</span><span class="identifier">X</span><span class="plain"> - </span><span class="identifier">arithmetic</span><span class="plain"> </span><span class="identifier">value</span><span class="plain">) </span><span class="identifier">divided</span><span class="plain"> </span><span class="identifier">by</span><span class="plain"> (</span><span class="identifier">Y</span><span class="plain"> - </span><span class="identifier">arithmetic</span><span class="plain"> </span><span class="identifier">value</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">arithmetic</span><span class="plain"> </span><span class="identifier">operation</span><span class="plain"> </span><span class="constant">3</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_divide</span><span class="plain">):</span>
|
|
<span class="plain">(- ({-</span><span class="identifier">arithmetic</span><span class="plain">-</span><span class="identifier">operation</span><span class="plain">:</span><span class="identifier">X</span><span class="plain">:</span><span class="identifier">Y</span><span class="plain">}) -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">which</span><span class="plain"> </span><span class="identifier">arithmetic</span><span class="plain"> </span><span class="identifier">value</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">remainder</span><span class="plain"> </span><span class="identifier">after</span><span class="plain"> </span><span class="identifier">dividing</span><span class="plain"> (</span><span class="identifier">X</span><span class="plain"> - </span><span class="identifier">arithmetic</span><span class="plain"> </span><span class="identifier">value</span><span class="plain">)</span>
|
|
<span class="identifier">by</span><span class="plain"> (</span><span class="identifier">Y</span><span class="plain"> - </span><span class="identifier">arithmetic</span><span class="plain"> </span><span class="identifier">value</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">arithmetic</span><span class="plain"> </span><span class="identifier">operation</span><span class="plain"> </span><span class="constant">4</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_remainder</span><span class="plain">):</span>
|
|
<span class="plain">(- ({-</span><span class="identifier">arithmetic</span><span class="plain">-</span><span class="identifier">operation</span><span class="plain">:</span><span class="identifier">X</span><span class="plain">:</span><span class="identifier">Y</span><span class="plain">}) -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">which</span><span class="plain"> </span><span class="identifier">arithmetic</span><span class="plain"> </span><span class="identifier">value</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> (</span><span class="identifier">X</span><span class="plain"> - </span><span class="identifier">arithmetic</span><span class="plain"> </span><span class="identifier">value</span><span class="plain">) </span><span class="identifier">to</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">nearest</span><span class="plain"> (</span><span class="identifier">Y</span><span class="plain"> - </span><span class="identifier">arithmetic</span><span class="plain"> </span><span class="identifier">value</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">arithmetic</span><span class="plain"> </span><span class="identifier">operation</span><span class="plain"> </span><span class="constant">5</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_nearest</span><span class="plain">):</span>
|
|
<span class="plain">(- ({-</span><span class="identifier">arithmetic</span><span class="plain">-</span><span class="identifier">operation</span><span class="plain">:</span><span class="identifier">X</span><span class="plain">:</span><span class="identifier">Y</span><span class="plain">}) -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">which</span><span class="plain"> </span><span class="identifier">arithmetic</span><span class="plain"> </span><span class="identifier">value</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">square</span><span class="plain"> </span><span class="identifier">root</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> (</span><span class="identifier">X</span><span class="plain"> - </span><span class="identifier">arithmetic</span><span class="plain"> </span><span class="identifier">value</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">arithmetic</span><span class="plain"> </span><span class="identifier">operation</span><span class="plain"> </span><span class="constant">6</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_squareroot</span><span class="plain">):</span>
|
|
<span class="plain">(- ({-</span><span class="identifier">arithmetic</span><span class="plain">-</span><span class="identifier">operation</span><span class="plain">:</span><span class="identifier">X</span><span class="plain">}) -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">which</span><span class="plain"> </span><span class="identifier">arithmetic</span><span class="plain"> </span><span class="identifier">value</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">cube</span><span class="plain"> </span><span class="identifier">root</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> (</span><span class="identifier">X</span><span class="plain"> - </span><span class="identifier">arithmetic</span><span class="plain"> </span><span class="identifier">value</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">arithmetic</span><span class="plain"> </span><span class="identifier">operation</span><span class="plain"> </span><span class="constant">8</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_cuberoot</span><span class="plain">):</span>
|
|
<span class="plain">(- ({-</span><span class="identifier">arithmetic</span><span class="plain">-</span><span class="identifier">operation</span><span class="plain">:</span><span class="identifier">X</span><span class="plain">}) -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">which</span><span class="plain"> </span><span class="identifier">arithmetic</span><span class="plain"> </span><span class="identifier">value</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">total</span><span class="plain"> (</span><span class="identifier">p</span><span class="plain"> - </span><span class="identifier">arithmetic</span><span class="plain"> </span><span class="identifier">value</span><span class="plain"> </span><span class="identifier">valued</span><span class="plain"> </span><span class="identifier">property</span><span class="plain">)</span>
|
|
<span class="identifier">of</span><span class="plain"> (</span><span class="identifier">S</span><span class="plain"> - </span><span class="identifier">description</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">values</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">arithmetic</span><span class="plain"> </span><span class="identifier">operation</span><span class="plain"> </span><span class="constant">12</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_total</span><span class="plain">):</span>
|
|
<span class="plain">(- {-</span><span class="identifier">primitive</span><span class="plain">-</span><span class="identifier">definition</span><span class="plain">:</span><span class="identifier">total</span><span class="plain">-</span><span class="identifier">of</span><span class="plain">} -).</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP17"></a><b>§17. </b>Real numbers are not available in the Z-machine, but they are likely to
|
|
be available everywhere else, i.e., on any other platform Inform may target
|
|
in future.
|
|
</p>
|
|
|
|
<p class="inwebparagraph">See test case <code class="display"><span class="extract">BIP-SayRealNumbers-G</span></code>, which has no Z-machine counterpart.
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">Section</span><span class="plain"> </span><span class="constant">2</span><span class="plain"> - </span><span class="identifier">Saying</span><span class="plain"> </span><span class="identifier">Real</span><span class="plain"> </span><span class="identifier">Numbers</span><span class="plain"> (</span><span class="identifier">not</span><span class="plain"> </span><span class="identifier">for</span><span class="plain"> </span><span class="identifier">Z</span><span class="plain">-</span><span class="identifier">machine</span><span class="plain">)</span>
|
|
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">say</span><span class="plain"> (</span><span class="identifier">R</span><span class="plain"> - </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">real</span><span class="plain"> </span><span class="identifier">number</span><span class="plain">) </span><span class="identifier">to</span><span class="plain"> (</span><span class="identifier">N</span><span class="plain"> - </span><span class="identifier">number</span><span class="plain">) </span><span class="identifier">decimal</span><span class="plain"> </span><span class="identifier">places</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">phs_realplaces</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">Float</span><span class="plain">({</span><span class="identifier">R</span><span class="plain">}, {</span><span class="identifier">N</span><span class="plain">}); -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">say</span><span class="plain"> (</span><span class="identifier">R</span><span class="plain"> - </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">real</span><span class="plain"> </span><span class="identifier">number</span><span class="plain">) </span><span class="identifier">in</span><span class="plain"> </span><span class="identifier">decimal</span><span class="plain"> </span><span class="identifier">notation</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">phs_decimal</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">FloatDec</span><span class="plain">({</span><span class="identifier">R</span><span class="plain">}); -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">say</span><span class="plain"> (</span><span class="identifier">R</span><span class="plain"> - </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">real</span><span class="plain"> </span><span class="identifier">number</span><span class="plain">) </span><span class="identifier">to</span><span class="plain"> (</span><span class="identifier">N</span><span class="plain"> - </span><span class="identifier">number</span><span class="plain">) </span><span class="identifier">decimal</span><span class="plain"> </span><span class="identifier">places</span><span class="plain"> </span><span class="identifier">in</span><span class="plain"> </span><span class="identifier">decimal</span><span class="plain"> </span><span class="identifier">notation</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">phs_decimalplaces</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">FloatDec</span><span class="plain">({</span><span class="identifier">R</span><span class="plain">}, {</span><span class="identifier">N</span><span class="plain">}); -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">say</span><span class="plain"> (</span><span class="identifier">R</span><span class="plain"> - </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">real</span><span class="plain"> </span><span class="identifier">number</span><span class="plain">) </span><span class="identifier">in</span><span class="plain"> </span><span class="identifier">scientific</span><span class="plain"> </span><span class="identifier">notation</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">phs_scientific</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">FloatExp</span><span class="plain">({</span><span class="identifier">R</span><span class="plain">}); -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">say</span><span class="plain"> (</span><span class="identifier">R</span><span class="plain"> - </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">real</span><span class="plain"> </span><span class="identifier">number</span><span class="plain">) </span><span class="identifier">to</span><span class="plain"> (</span><span class="identifier">N</span><span class="plain"> - </span><span class="identifier">number</span><span class="plain">) </span><span class="identifier">decimal</span><span class="plain"> </span><span class="identifier">places</span><span class="plain"> </span><span class="identifier">in</span><span class="plain"> </span><span class="identifier">scientific</span><span class="plain"> </span><span class="identifier">notation</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">phs_scientificplaces</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">FloatExp</span><span class="plain">({</span><span class="identifier">R</span><span class="plain">}, {</span><span class="identifier">N</span><span class="plain">}); -).</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP18"></a><b>§18. </b>A number of miscellaneous mathematical functions follow, for real
|
|
numbers only; these are tested as part of <code class="display"><span class="extract">BIP-ArithmeticOperations-G</span></code>,
|
|
already mentioned above. Note that we do not need to define real versions
|
|
of addition, multiplication and so on: the above definitions are polymorphic
|
|
enough to have done that already.
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">Section</span><span class="plain"> </span><span class="constant">3</span><span class="plain"> - </span><span class="identifier">Real</span><span class="plain"> </span><span class="identifier">Arithmetic</span><span class="plain"> (</span><span class="identifier">not</span><span class="plain"> </span><span class="identifier">for</span><span class="plain"> </span><span class="identifier">Z</span><span class="plain">-</span><span class="identifier">machine</span><span class="plain">)</span>
|
|
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">which</span><span class="plain"> </span><span class="identifier">real</span><span class="plain"> </span><span class="identifier">number</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">reciprocal</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> (</span><span class="identifier">R</span><span class="plain"> - </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">real</span><span class="plain"> </span><span class="identifier">number</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_reciprocal</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">REAL_NUMBER_TY_Reciprocal</span><span class="plain">({</span><span class="identifier">R</span><span class="plain">}) -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">which</span><span class="plain"> </span><span class="identifier">real</span><span class="plain"> </span><span class="identifier">number</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">absolute</span><span class="plain"> </span><span class="identifier">value</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> (</span><span class="identifier">R</span><span class="plain"> - </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">real</span><span class="plain"> </span><span class="identifier">number</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_absolutevalue</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">this</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">abs</span><span class="plain"> </span><span class="identifier">function</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">REAL_NUMBER_TY_Abs</span><span class="plain">({</span><span class="identifier">R</span><span class="plain">}) -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">which</span><span class="plain"> </span><span class="identifier">real</span><span class="plain"> </span><span class="identifier">number</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">real</span><span class="plain"> </span><span class="identifier">square</span><span class="plain"> </span><span class="identifier">root</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> (</span><span class="identifier">R</span><span class="plain"> - </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">real</span><span class="plain"> </span><span class="identifier">number</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">arithmetic</span><span class="plain"> </span><span class="identifier">operation</span><span class="plain"> </span><span class="constant">7</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_realsquareroot</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">this</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">root</span><span class="plain"> </span><span class="identifier">function</span><span class="plain"> </span><span class="identifier">inverse</span><span class="plain"> </span><span class="identifier">to</span><span class="plain"> </span><span class="identifier">rsqr</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">REAL_NUMBER_TY_Root</span><span class="plain">({</span><span class="identifier">R</span><span class="plain">}) -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">which</span><span class="plain"> </span><span class="identifier">real</span><span class="plain"> </span><span class="identifier">number</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">real</span><span class="plain"> </span><span class="identifier">square</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> (</span><span class="identifier">R</span><span class="plain"> - </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">real</span><span class="plain"> </span><span class="identifier">number</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">this</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">rsqr</span><span class="plain"> </span><span class="identifier">function</span><span class="plain"> </span><span class="identifier">inverse</span><span class="plain"> </span><span class="identifier">to</span><span class="plain"> </span><span class="identifier">root</span><span class="plain">):</span>
|
|
<span class="identifier">let</span><span class="plain"> </span><span class="identifier">x</span><span class="plain"> </span><span class="identifier">be</span><span class="plain"> </span><span class="identifier">given</span><span class="plain"> </span><span class="identifier">by</span><span class="plain"> </span><span class="identifier">x</span><span class="plain"> = </span><span class="identifier">R</span><span class="plain">^2 </span><span class="identifier">where</span><span class="plain"> </span><span class="identifier">x</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">real</span><span class="plain"> </span><span class="identifier">number</span><span class="plain">;</span>
|
|
<span class="identifier">decide</span><span class="plain"> </span><span class="identifier">on</span><span class="plain"> </span><span class="identifier">x</span><span class="plain">.</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">which</span><span class="plain"> </span><span class="identifier">real</span><span class="plain"> </span><span class="identifier">number</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">ceiling</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> (</span><span class="identifier">R</span><span class="plain"> - </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">real</span><span class="plain"> </span><span class="identifier">number</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_ceiling</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">this</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">ceiling</span><span class="plain"> </span><span class="identifier">function</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">REAL_NUMBER_TY_Ceiling</span><span class="plain">({</span><span class="identifier">R</span><span class="plain">}) -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">which</span><span class="plain"> </span><span class="identifier">real</span><span class="plain"> </span><span class="identifier">number</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">floor</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> (</span><span class="identifier">R</span><span class="plain"> - </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">real</span><span class="plain"> </span><span class="identifier">number</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_floor</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">this</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">floor</span><span class="plain"> </span><span class="identifier">function</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">REAL_NUMBER_TY_Floor</span><span class="plain">({</span><span class="identifier">R</span><span class="plain">}) -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">which</span><span class="plain"> </span><span class="identifier">number</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> (</span><span class="identifier">R</span><span class="plain"> - </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">real</span><span class="plain"> </span><span class="identifier">number</span><span class="plain">) </span><span class="identifier">to</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">nearest</span><span class="plain"> </span><span class="identifier">whole</span><span class="plain"> </span><span class="identifier">number</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_nearestwholenumber</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">this</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">int</span><span class="plain"> </span><span class="identifier">function</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">REAL_NUMBER_TY_to_NUMBER_TY</span><span class="plain">({</span><span class="identifier">R</span><span class="plain">}) -).</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP19"></a><b>§19. </b>And these are tested in <code class="display"><span class="extract">BIP-Exponentials-G</span></code>.
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">Section</span><span class="plain"> </span><span class="constant">4</span><span class="plain"> - </span><span class="identifier">Exponential</span><span class="plain"> </span><span class="identifier">Functions</span><span class="plain"> (</span><span class="identifier">not</span><span class="plain"> </span><span class="identifier">for</span><span class="plain"> </span><span class="identifier">Z</span><span class="plain">-</span><span class="identifier">machine</span><span class="plain">)</span>
|
|
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">which</span><span class="plain"> </span><span class="identifier">real</span><span class="plain"> </span><span class="identifier">number</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">natural</span><span class="plain">/-- </span><span class="identifier">logarithm</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> (</span><span class="identifier">R</span><span class="plain"> - </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">real</span><span class="plain"> </span><span class="identifier">number</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_logarithm</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">this</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">log</span><span class="plain"> </span><span class="identifier">function</span><span class="plain"> </span><span class="identifier">inverse</span><span class="plain"> </span><span class="identifier">to</span><span class="plain"> </span><span class="identifier">exp</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">REAL_NUMBER_TY_Log</span><span class="plain">({</span><span class="identifier">R</span><span class="plain">}) -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">which</span><span class="plain"> </span><span class="identifier">real</span><span class="plain"> </span><span class="identifier">number</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">logarithm</span><span class="plain"> </span><span class="identifier">to</span><span class="plain"> </span><span class="identifier">base</span><span class="plain"> (</span><span class="identifier">N</span><span class="plain"> - </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">number</span><span class="plain">) </span><span class="identifier">of</span><span class="plain"> (</span><span class="identifier">R</span><span class="plain"> - </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">real</span><span class="plain"> </span><span class="identifier">number</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_logarithmto</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">REAL_NUMBER_TY_BLog</span><span class="plain">({</span><span class="identifier">R</span><span class="plain">}, {</span><span class="identifier">N</span><span class="plain">}) -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">which</span><span class="plain"> </span><span class="identifier">real</span><span class="plain"> </span><span class="identifier">number</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">exponential</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> (</span><span class="identifier">R</span><span class="plain"> - </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">real</span><span class="plain"> </span><span class="identifier">number</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_exp</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">this</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">exp</span><span class="plain"> </span><span class="identifier">function</span><span class="plain"> </span><span class="identifier">inverse</span><span class="plain"> </span><span class="identifier">to</span><span class="plain"> </span><span class="identifier">log</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">REAL_NUMBER_TY_Exp</span><span class="plain">({</span><span class="identifier">R</span><span class="plain">}) -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">which</span><span class="plain"> </span><span class="identifier">real</span><span class="plain"> </span><span class="identifier">number</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> (</span><span class="identifier">R</span><span class="plain"> - </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">real</span><span class="plain"> </span><span class="identifier">number</span><span class="plain">) </span><span class="identifier">to</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">power</span><span class="plain"> (</span><span class="identifier">P</span><span class="plain"> - </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">real</span><span class="plain"> </span><span class="identifier">number</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_power</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">REAL_NUMBER_TY_Pow</span><span class="plain">({</span><span class="identifier">R</span><span class="plain">}, {</span><span class="identifier">P</span><span class="plain">}) -).</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP20"></a><b>§20. </b>And these are tested in <code class="display"><span class="extract">BIP-Trigonometry-G</span></code>.
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">Section</span><span class="plain"> </span><span class="constant">5</span><span class="plain"> - </span><span class="identifier">Trigonometric</span><span class="plain"> </span><span class="identifier">Functions</span><span class="plain"> (</span><span class="identifier">not</span><span class="plain"> </span><span class="identifier">for</span><span class="plain"> </span><span class="identifier">Z</span><span class="plain">-</span><span class="identifier">machine</span><span class="plain">)</span>
|
|
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">which</span><span class="plain"> </span><span class="identifier">real</span><span class="plain"> </span><span class="identifier">number</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> (</span><span class="identifier">R</span><span class="plain"> - </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">real</span><span class="plain"> </span><span class="identifier">number</span><span class="plain">) </span><span class="identifier">degrees</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_degrees</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">REAL_NUMBER_TY_Times</span><span class="plain">({</span><span class="identifier">R</span><span class="plain">}, $+0.0174532925) -).</span>
|
|
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">which</span><span class="plain"> </span><span class="identifier">real</span><span class="plain"> </span><span class="identifier">number</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">sine</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> (</span><span class="identifier">R</span><span class="plain"> - </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">real</span><span class="plain"> </span><span class="identifier">number</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_sine</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">this</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">sin</span><span class="plain"> </span><span class="identifier">function</span><span class="plain"> </span><span class="identifier">inverse</span><span class="plain"> </span><span class="identifier">to</span><span class="plain"> </span><span class="identifier">arcsin</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">REAL_NUMBER_TY_Sin</span><span class="plain">({</span><span class="identifier">R</span><span class="plain">}) -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">which</span><span class="plain"> </span><span class="identifier">real</span><span class="plain"> </span><span class="identifier">number</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">cosine</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> (</span><span class="identifier">R</span><span class="plain"> - </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">real</span><span class="plain"> </span><span class="identifier">number</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_cosine</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">this</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">cos</span><span class="plain"> </span><span class="identifier">function</span><span class="plain"> </span><span class="identifier">inverse</span><span class="plain"> </span><span class="identifier">to</span><span class="plain"> </span><span class="identifier">arccos</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">REAL_NUMBER_TY_Cos</span><span class="plain">({</span><span class="identifier">R</span><span class="plain">}) -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">which</span><span class="plain"> </span><span class="identifier">real</span><span class="plain"> </span><span class="identifier">number</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">tangent</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> (</span><span class="identifier">R</span><span class="plain"> - </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">real</span><span class="plain"> </span><span class="identifier">number</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_tangent</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">this</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">tan</span><span class="plain"> </span><span class="identifier">function</span><span class="plain"> </span><span class="identifier">inverse</span><span class="plain"> </span><span class="identifier">to</span><span class="plain"> </span><span class="identifier">arctan</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">REAL_NUMBER_TY_Tan</span><span class="plain">({</span><span class="identifier">R</span><span class="plain">}) -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">which</span><span class="plain"> </span><span class="identifier">real</span><span class="plain"> </span><span class="identifier">number</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">arcsine</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> (</span><span class="identifier">R</span><span class="plain"> - </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">real</span><span class="plain"> </span><span class="identifier">number</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_arcsine</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">this</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">arcsin</span><span class="plain"> </span><span class="identifier">function</span><span class="plain"> </span><span class="identifier">inverse</span><span class="plain"> </span><span class="identifier">to</span><span class="plain"> </span><span class="identifier">sin</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">REAL_NUMBER_TY_Arcsin</span><span class="plain">({</span><span class="identifier">R</span><span class="plain">}) -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">which</span><span class="plain"> </span><span class="identifier">real</span><span class="plain"> </span><span class="identifier">number</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">arccosine</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> (</span><span class="identifier">R</span><span class="plain"> - </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">real</span><span class="plain"> </span><span class="identifier">number</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_arccosine</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">this</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">arccos</span><span class="plain"> </span><span class="identifier">function</span><span class="plain"> </span><span class="identifier">inverse</span><span class="plain"> </span><span class="identifier">to</span><span class="plain"> </span><span class="identifier">cos</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">REAL_NUMBER_TY_Arccos</span><span class="plain">({</span><span class="identifier">R</span><span class="plain">}) -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">which</span><span class="plain"> </span><span class="identifier">real</span><span class="plain"> </span><span class="identifier">number</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">arctangent</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> (</span><span class="identifier">R</span><span class="plain"> - </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">real</span><span class="plain"> </span><span class="identifier">number</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_arctangent</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">this</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">arctan</span><span class="plain"> </span><span class="identifier">function</span><span class="plain"> </span><span class="identifier">inverse</span><span class="plain"> </span><span class="identifier">to</span><span class="plain"> </span><span class="identifier">tan</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">REAL_NUMBER_TY_Arctan</span><span class="plain">({</span><span class="identifier">R</span><span class="plain">}) -).</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP21"></a><b>§21. </b>And these are tested in <code class="display"><span class="extract">BIP-Hyperbolics-G</span></code>.
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">Section</span><span class="plain"> </span><span class="constant">6</span><span class="plain"> - </span><span class="identifier">Trigonometric</span><span class="plain"> </span><span class="identifier">Functions</span><span class="plain"> (</span><span class="identifier">not</span><span class="plain"> </span><span class="identifier">for</span><span class="plain"> </span><span class="identifier">Z</span><span class="plain">-</span><span class="identifier">machine</span><span class="plain">)</span>
|
|
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">which</span><span class="plain"> </span><span class="identifier">real</span><span class="plain"> </span><span class="identifier">number</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">hyperbolic</span><span class="plain"> </span><span class="identifier">sine</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> (</span><span class="identifier">R</span><span class="plain"> - </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">real</span><span class="plain"> </span><span class="identifier">number</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_hyperbolicsine</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">this</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">sinh</span><span class="plain"> </span><span class="identifier">function</span><span class="plain"> </span><span class="identifier">inverse</span><span class="plain"> </span><span class="identifier">to</span><span class="plain"> </span><span class="identifier">arcsinh</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">REAL_NUMBER_TY_Sinh</span><span class="plain">({</span><span class="identifier">R</span><span class="plain">}) -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">which</span><span class="plain"> </span><span class="identifier">real</span><span class="plain"> </span><span class="identifier">number</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">hyperbolic</span><span class="plain"> </span><span class="identifier">cosine</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> (</span><span class="identifier">R</span><span class="plain"> - </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">real</span><span class="plain"> </span><span class="identifier">number</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_hyperboliccosine</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">this</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">cosh</span><span class="plain"> </span><span class="identifier">function</span><span class="plain"> </span><span class="identifier">inverse</span><span class="plain"> </span><span class="identifier">to</span><span class="plain"> </span><span class="identifier">arccosh</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">REAL_NUMBER_TY_Cosh</span><span class="plain">({</span><span class="identifier">R</span><span class="plain">}) -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">which</span><span class="plain"> </span><span class="identifier">real</span><span class="plain"> </span><span class="identifier">number</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">hyperbolic</span><span class="plain"> </span><span class="identifier">tangent</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> (</span><span class="identifier">R</span><span class="plain"> - </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">real</span><span class="plain"> </span><span class="identifier">number</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_hyperbolictangent</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">this</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">tanh</span><span class="plain"> </span><span class="identifier">function</span><span class="plain"> </span><span class="identifier">inverse</span><span class="plain"> </span><span class="identifier">to</span><span class="plain"> </span><span class="identifier">arctanh</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">REAL_NUMBER_TY_Tanh</span><span class="plain">({</span><span class="identifier">R</span><span class="plain">}) -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">which</span><span class="plain"> </span><span class="identifier">real</span><span class="plain"> </span><span class="identifier">number</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">hyperbolic</span><span class="plain"> </span><span class="identifier">arcsine</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> (</span><span class="identifier">R</span><span class="plain"> - </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">real</span><span class="plain"> </span><span class="identifier">number</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_hyperbolicarcsine</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">this</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">arcsinh</span><span class="plain"> </span><span class="identifier">function</span><span class="plain"> </span><span class="identifier">inverse</span><span class="plain"> </span><span class="identifier">to</span><span class="plain"> </span><span class="identifier">sinh</span><span class="plain">):</span>
|
|
<span class="identifier">let</span><span class="plain"> </span><span class="identifier">x</span><span class="plain"> </span><span class="identifier">be</span><span class="plain"> </span><span class="identifier">given</span><span class="plain"> </span><span class="identifier">by</span><span class="plain"> </span><span class="identifier">x</span><span class="plain"> = </span><span class="identifier">log</span><span class="plain">(</span><span class="identifier">R</span><span class="plain"> + </span><span class="identifier">root</span><span class="plain">(</span><span class="identifier">R</span><span class="plain">^2 + </span><span class="constant">1</span><span class="plain">)) </span><span class="identifier">where</span><span class="plain"> </span><span class="identifier">x</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">real</span><span class="plain"> </span><span class="identifier">number</span><span class="plain">;</span>
|
|
<span class="identifier">decide</span><span class="plain"> </span><span class="identifier">on</span><span class="plain"> </span><span class="identifier">x</span><span class="plain">.</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">which</span><span class="plain"> </span><span class="identifier">real</span><span class="plain"> </span><span class="identifier">number</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">hyperbolic</span><span class="plain"> </span><span class="identifier">arccosine</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> (</span><span class="identifier">R</span><span class="plain"> - </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">real</span><span class="plain"> </span><span class="identifier">number</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_hyperbolicarccosine</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">this</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">arccosh</span><span class="plain"> </span><span class="identifier">function</span><span class="plain"> </span><span class="identifier">inverse</span><span class="plain"> </span><span class="identifier">to</span><span class="plain"> </span><span class="identifier">cosh</span><span class="plain">):</span>
|
|
<span class="identifier">let</span><span class="plain"> </span><span class="identifier">x</span><span class="plain"> </span><span class="identifier">be</span><span class="plain"> </span><span class="identifier">given</span><span class="plain"> </span><span class="identifier">by</span><span class="plain"> </span><span class="identifier">x</span><span class="plain"> = </span><span class="identifier">log</span><span class="plain">(</span><span class="identifier">R</span><span class="plain"> + </span><span class="identifier">root</span><span class="plain">(</span><span class="identifier">R</span><span class="plain">^2 - </span><span class="constant">1</span><span class="plain">)) </span><span class="identifier">where</span><span class="plain"> </span><span class="identifier">x</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">real</span><span class="plain"> </span><span class="identifier">number</span><span class="plain">;</span>
|
|
<span class="identifier">decide</span><span class="plain"> </span><span class="identifier">on</span><span class="plain"> </span><span class="identifier">x</span><span class="plain">.</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">which</span><span class="plain"> </span><span class="identifier">real</span><span class="plain"> </span><span class="identifier">number</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">hyperbolic</span><span class="plain"> </span><span class="identifier">arctangent</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> (</span><span class="identifier">R</span><span class="plain"> - </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">real</span><span class="plain"> </span><span class="identifier">number</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_hyperbolicarctangent</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">this</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">arctanh</span><span class="plain"> </span><span class="identifier">function</span><span class="plain"> </span><span class="identifier">inverse</span><span class="plain"> </span><span class="identifier">to</span><span class="plain"> </span><span class="identifier">tanh</span><span class="plain">):</span>
|
|
<span class="identifier">let</span><span class="plain"> </span><span class="identifier">x</span><span class="plain"> </span><span class="identifier">be</span><span class="plain"> </span><span class="identifier">given</span><span class="plain"> </span><span class="identifier">by</span><span class="plain"> </span><span class="identifier">x</span><span class="plain"> = </span><span class="constant">0</span><span class="plain">.5*(</span><span class="identifier">log</span><span class="plain">(1+</span><span class="identifier">R</span><span class="plain">) - </span><span class="identifier">log</span><span class="plain">(1-</span><span class="identifier">R</span><span class="plain">)) </span><span class="identifier">where</span><span class="plain"> </span><span class="identifier">x</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">real</span><span class="plain"> </span><span class="identifier">number</span><span class="plain">;</span>
|
|
<span class="identifier">decide</span><span class="plain"> </span><span class="identifier">on</span><span class="plain"> </span><span class="identifier">x</span><span class="plain">.</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP22"></a><b>§22. Control structures. </b>The term "control structure" conjures up the thought of conditionals and loops,
|
|
and we'll get to those, but we'll begin with the equivalent of the C language's
|
|
<code class="display"><span class="extract">return</span></code> statement: ending a function call with some value as an outcome.
|
|
Inform calls this "deciding" something, since in Inform programs functions
|
|
returning values are usually quite functional: that is, their point is what
|
|
value they return, rather than the side-effects of what they did.
|
|
</p>
|
|
|
|
<p class="inwebparagraph">Note that returning a value has to invoke the type-checker to ensure that
|
|
the return value matches the kind of value expected. This certainly rejects
|
|
the phrase if it's used in a definition which isn't meant to be deciding
|
|
a value at all, so an "in... only" clause is not needed.
|
|
</p>
|
|
|
|
<p class="inwebparagraph">The IF-form of Inform allows the antique syntaxes "yes" and "no" as
|
|
synonyms for "decide yes" and "decide no"; these are not present in Basic
|
|
Inform, and are defined in the Standard Rules (and only to keep old source
|
|
text working).
|
|
</p>
|
|
|
|
<p class="inwebparagraph">See test case <code class="display"><span class="extract">BIP-Decide</span></code>.
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">Chapter</span><span class="plain"> </span><span class="constant">3</span><span class="plain"> - </span><span class="identifier">Control</span>
|
|
|
|
<span class="identifier">Section</span><span class="plain"> </span><span class="constant">1</span><span class="plain"> - </span><span class="identifier">Deciding</span><span class="plain"> </span><span class="identifier">Outcomes</span>
|
|
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">yes</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_yes</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">rtrue</span><span class="plain">; -) - </span><span class="identifier">in</span><span class="plain"> </span><span class="identifier">to</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">if</span><span class="plain"> </span><span class="identifier">only</span><span class="plain">.</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">no</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_no</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">rfalse</span><span class="plain">; -) - </span><span class="identifier">in</span><span class="plain"> </span><span class="identifier">to</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">if</span><span class="plain"> </span><span class="identifier">only</span><span class="plain">.</span>
|
|
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">stop</span><span class="plain"> (</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_stop</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">rtrue</span><span class="plain">; -) - </span><span class="identifier">in</span><span class="plain"> </span><span class="identifier">to</span><span class="plain"> </span><span class="identifier">only</span><span class="plain">.</span>
|
|
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">on</span><span class="plain"> (</span><span class="identifier">something</span><span class="plain"> - </span><span class="identifier">value</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_decideon</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">return</span><span class="plain"> {-</span><span class="identifier">return</span><span class="plain">-</span><span class="identifier">value</span><span class="plain">:</span><span class="identifier">something</span><span class="plain">}; -).</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP23"></a><b>§23. </b>While "unless" is supposed to be exactly like "if" but with the reversed
|
|
sense of the condition, that isn't quite true. For example, there is no
|
|
"unless ... then ...": logical it might be, English it is not.
|
|
</p>
|
|
|
|
<p class="inwebparagraph">The switch form of "if" is subtly different, and here again "unless" is
|
|
not allowed in its place.
|
|
</p>
|
|
|
|
<p class="inwebparagraph">As with some other control structures, the definitions here are somewhat
|
|
partial, and made up for by direct code in the compiler. (There's a limit to
|
|
how much a general syntax for phrases can encode control phrases.)
|
|
</p>
|
|
|
|
<p class="inwebparagraph">See test case <code class="display"><span class="extract">BIP-If</span></code>.
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">Section</span><span class="plain"> </span><span class="constant">2</span><span class="plain"> - </span><span class="identifier">If</span><span class="plain"> </span><span class="identifier">and</span><span class="plain"> </span><span class="identifier">Unless</span>
|
|
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">if</span><span class="plain"> (</span><span class="identifier">c</span><span class="plain"> - </span><span class="identifier">condition</span><span class="plain">) </span><span class="identifier">begin</span><span class="plain"> -- </span><span class="identifier">end</span><span class="plain"> </span><span class="identifier">conditional</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_if</span><span class="plain">):</span>
|
|
<span class="plain">(- {</span><span class="identifier">c</span><span class="plain">} -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">unless</span><span class="plain"> (</span><span class="identifier">c</span><span class="plain"> - </span><span class="identifier">condition</span><span class="plain">) </span><span class="identifier">begin</span><span class="plain"> -- </span><span class="identifier">end</span><span class="plain"> </span><span class="identifier">conditional</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_unless</span><span class="plain">):</span>
|
|
<span class="plain">(- (~~{</span><span class="identifier">c</span><span class="plain">}) -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">if</span><span class="plain"> (</span><span class="identifier">V</span><span class="plain"> - </span><span class="identifier">value</span><span class="plain">) </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">begin</span><span class="plain"> -- </span><span class="identifier">end</span><span class="plain"> </span><span class="identifier">conditional</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_switch</span><span class="plain">):</span>
|
|
<span class="plain">(- -).</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP24"></a><b>§24. </b>"Do nothing" is a curious feature for a high-level programming language (C,
|
|
for example, does not have a NOP function); it entered Inform in the earliest
|
|
days, when it was useful mainly when natural language syntax had painted users
|
|
into a corner. (In the examples, it used to be used when conditions were
|
|
awkward to negate — if condition, do nothing, otherwise blah blah blah — but
|
|
the creation of "unless" made it possible to remove most of the "do
|
|
nothing"s.) It is now hardly ever useful.
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">do</span><span class="plain"> </span><span class="identifier">nothing</span><span class="plain"> (</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_nothing</span><span class="plain">):</span>
|
|
<span class="plain">(- ; -).</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP25"></a><b>§25. </b>After all that, the while loop is simplicity itself. Perhaps the presence
|
|
of "unless" for "if" argues for a similarly negated form, "until" for
|
|
"while", but users haven't yet petitioned for this.
|
|
</p>
|
|
|
|
<p class="inwebparagraph">See test case <code class="display"><span class="extract">BIP-Loops</span></code>.
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">Section</span><span class="plain"> </span><span class="constant">3</span><span class="plain"> - </span><span class="identifier">While</span><span class="plain"> </span><span class="identifier">and</span><span class="plain"> </span><span class="identifier">Repeat</span>
|
|
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">while</span><span class="plain"> (</span><span class="identifier">c</span><span class="plain"> - </span><span class="identifier">condition</span><span class="plain">) </span><span class="identifier">begin</span><span class="plain"> -- </span><span class="identifier">end</span><span class="plain"> </span><span class="identifier">loop</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_while</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">while</span><span class="plain"> {</span><span class="identifier">c</span><span class="plain">} -).</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP26"></a><b>§26. </b>The repeat loop looks like a single construction, but isn't, because the
|
|
range can be given in four fundamentally different ways (and the loop variable
|
|
then has a different kind of value accordingly). First, the equivalents of
|
|
BASIC's <code class="display"><span class="extract">for</span></code> loop and of Inform 6's <code class="display"><span class="extract">objectloop</span></code>, respectively:
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">repeat</span><span class="plain"> </span><span class="identifier">with</span><span class="plain"> (</span><span class="identifier">loopvar</span><span class="plain"> - </span><span class="identifier">nonexisting</span><span class="plain"> </span><span class="identifier">K</span><span class="plain"> </span><span class="identifier">variable</span><span class="plain">)</span>
|
|
<span class="identifier">running</span><span class="plain"> </span><span class="identifier">from</span><span class="plain"> (</span><span class="identifier">v</span><span class="plain"> - </span><span class="identifier">arithmetic</span><span class="plain"> </span><span class="identifier">value</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">kind</span><span class="plain"> </span><span class="identifier">K</span><span class="plain">) </span><span class="identifier">to</span><span class="plain"> (</span><span class="identifier">w</span><span class="plain"> - </span><span class="identifier">K</span><span class="plain">) </span><span class="identifier">begin</span><span class="plain"> -- </span><span class="identifier">end</span><span class="plain"> </span><span class="identifier">loop</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_repeat</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">for</span><span class="plain"> ({</span><span class="identifier">loopvar</span><span class="plain">}={</span><span class="identifier">v</span><span class="plain">}: {</span><span class="identifier">loopvar</span><span class="plain">}<={</span><span class="identifier">w</span><span class="plain">}: {</span><span class="identifier">loopvar</span><span class="plain">}++) -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">repeat</span><span class="plain"> </span><span class="identifier">with</span><span class="plain"> (</span><span class="identifier">loopvar</span><span class="plain"> - </span><span class="identifier">nonexisting</span><span class="plain"> </span><span class="identifier">K</span><span class="plain"> </span><span class="identifier">variable</span><span class="plain">)</span>
|
|
<span class="identifier">running</span><span class="plain"> </span><span class="identifier">from</span><span class="plain"> (</span><span class="identifier">v</span><span class="plain"> - </span><span class="identifier">enumerated</span><span class="plain"> </span><span class="identifier">value</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">kind</span><span class="plain"> </span><span class="identifier">K</span><span class="plain">) </span><span class="identifier">to</span><span class="plain"> (</span><span class="identifier">w</span><span class="plain"> - </span><span class="identifier">K</span><span class="plain">) </span><span class="identifier">begin</span><span class="plain"> -- </span><span class="identifier">end</span><span class="plain"> </span><span class="identifier">loop</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_repeat</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">for</span><span class="plain"> ({</span><span class="identifier">loopvar</span><span class="plain">}={</span><span class="identifier">v</span><span class="plain">}: {</span><span class="identifier">loopvar</span><span class="plain">}<={</span><span class="identifier">w</span><span class="plain">}: {</span><span class="identifier">loopvar</span><span class="plain">}++) -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">repeat</span><span class="plain"> </span><span class="identifier">with</span><span class="plain"> (</span><span class="identifier">loopvar</span><span class="plain"> - </span><span class="identifier">nonexisting</span><span class="plain"> </span><span class="identifier">K</span><span class="plain"> </span><span class="identifier">variable</span><span class="plain">)</span>
|
|
<span class="identifier">running</span><span class="plain"> </span><span class="identifier">through</span><span class="plain"> (</span><span class="identifier">OS</span><span class="plain"> - </span><span class="identifier">description</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">values</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">kind</span><span class="plain"> </span><span class="identifier">K</span><span class="plain">) </span><span class="identifier">begin</span><span class="plain"> -- </span><span class="identifier">end</span><span class="plain"> </span><span class="identifier">loop</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_runthrough</span><span class="plain">):</span>
|
|
<span class="plain">(- {-</span><span class="identifier">primitive</span><span class="plain">-</span><span class="identifier">definition</span><span class="plain">:</span><span class="identifier">repeat</span><span class="plain">-</span><span class="identifier">through</span><span class="plain">} -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">repeat</span><span class="plain"> </span><span class="identifier">with</span><span class="plain"> (</span><span class="identifier">loopvar</span><span class="plain"> - </span><span class="identifier">nonexisting</span><span class="plain"> </span><span class="identifier">object</span><span class="plain"> </span><span class="identifier">variable</span><span class="plain">)</span>
|
|
<span class="identifier">running</span><span class="plain"> </span><span class="identifier">through</span><span class="plain"> (</span><span class="identifier">L</span><span class="plain"> - </span><span class="identifier">list</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">values</span><span class="plain">) </span><span class="identifier">begin</span><span class="plain"> -- </span><span class="identifier">end</span><span class="plain"> </span><span class="identifier">loop</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_repeatlist</span><span class="plain">):</span>
|
|
<span class="plain">(- {-</span><span class="identifier">primitive</span><span class="plain">-</span><span class="identifier">definition</span><span class="plain">:</span><span class="identifier">repeat</span><span class="plain">-</span><span class="identifier">through</span><span class="plain">-</span><span class="identifier">list</span><span class="plain">} -).</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP27"></a><b>§27. </b>The following are all repeats where the range is the set of rows of a table,
|
|
taken in some order, and the repeat variable — though it does exist — is
|
|
never specified since the relevant row is instead the one selected during
|
|
each iteration of the loop.
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">repeat</span><span class="plain"> </span><span class="identifier">through</span><span class="plain"> (</span><span class="identifier">T</span><span class="plain"> - </span><span class="identifier">table</span><span class="plain"> </span><span class="identifier">name</span><span class="plain">) </span><span class="identifier">begin</span><span class="plain"> -- </span><span class="identifier">end</span><span class="plain"> </span><span class="identifier">loop</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_repeattable</span><span class="plain">): (-</span>
|
|
<span class="plain">@</span><span class="identifier">push</span><span class="plain"> {-</span><span class="identifier">my</span><span class="plain">:</span><span class="identifier">ct_0</span><span class="plain">}; @</span><span class="identifier">push</span><span class="plain"> {-</span><span class="identifier">my</span><span class="plain">:</span><span class="identifier">ct_1</span><span class="plain">};</span>
|
|
<span class="identifier">for</span><span class="plain"> ({-</span><span class="identifier">my</span><span class="plain">:1}={</span><span class="identifier">T</span><span class="plain">}, {-</span><span class="identifier">my</span><span class="plain">:2}=1, </span><span class="identifier">ct_0</span><span class="plain">={-</span><span class="identifier">my</span><span class="plain">:1}, </span><span class="identifier">ct_1</span><span class="plain">={-</span><span class="identifier">my</span><span class="plain">:2}:</span>
|
|
<span class="plain">{-</span><span class="identifier">my</span><span class="plain">:2}<=</span><span class="identifier">TableRows</span><span class="plain">({-</span><span class="identifier">my</span><span class="plain">:1}):</span>
|
|
<span class="plain">{-</span><span class="identifier">my</span><span class="plain">:2}++, </span><span class="identifier">ct_0</span><span class="plain">={-</span><span class="identifier">my</span><span class="plain">:1}, </span><span class="identifier">ct_1</span><span class="plain">={-</span><span class="identifier">my</span><span class="plain">:2})</span>
|
|
<span class="identifier">if</span><span class="plain"> (</span><span class="identifier">TableRowIsBlank</span><span class="plain">(</span><span class="identifier">ct_0</span><span class="plain">, </span><span class="identifier">ct_1</span><span class="plain">)==</span><span class="identifier">false</span><span class="plain">)</span>
|
|
<span class="plain">{-</span><span class="identifier">block</span><span class="plain">}</span>
|
|
<span class="plain">@</span><span class="identifier">pull</span><span class="plain"> {-</span><span class="identifier">my</span><span class="plain">:</span><span class="identifier">ct_1</span><span class="plain">}; @</span><span class="identifier">pull</span><span class="plain"> {-</span><span class="identifier">my</span><span class="plain">:</span><span class="identifier">ct_0</span><span class="plain">};</span>
|
|
<span class="plain">-).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">repeat</span><span class="plain"> </span><span class="identifier">through</span><span class="plain"> (</span><span class="identifier">T</span><span class="plain"> - </span><span class="identifier">table</span><span class="plain"> </span><span class="identifier">name</span><span class="plain">) </span><span class="identifier">in</span><span class="plain"> </span><span class="identifier">reverse</span><span class="plain"> </span><span class="identifier">order</span><span class="plain"> </span><span class="identifier">begin</span><span class="plain"> -- </span><span class="identifier">end</span><span class="plain"> </span><span class="identifier">loop</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_repeattablereverse</span><span class="plain">): (-</span>
|
|
<span class="plain">@</span><span class="identifier">push</span><span class="plain"> {-</span><span class="identifier">my</span><span class="plain">:</span><span class="identifier">ct_0</span><span class="plain">}; @</span><span class="identifier">push</span><span class="plain"> {-</span><span class="identifier">my</span><span class="plain">:</span><span class="identifier">ct_1</span><span class="plain">};</span>
|
|
<span class="identifier">for</span><span class="plain"> ({-</span><span class="identifier">my</span><span class="plain">:1}={</span><span class="identifier">T</span><span class="plain">}, {-</span><span class="identifier">my</span><span class="plain">:2}=</span><span class="identifier">TableRows</span><span class="plain">({-</span><span class="identifier">my</span><span class="plain">:1}), </span><span class="identifier">ct_0</span><span class="plain">={-</span><span class="identifier">my</span><span class="plain">:1}, </span><span class="identifier">ct_1</span><span class="plain">={-</span><span class="identifier">my</span><span class="plain">:2}:</span>
|
|
<span class="plain">{-</span><span class="identifier">my</span><span class="plain">:2}>=1:</span>
|
|
<span class="plain">{-</span><span class="identifier">my</span><span class="plain">:2}--, </span><span class="identifier">ct_0</span><span class="plain">={-</span><span class="identifier">my</span><span class="plain">:1}, </span><span class="identifier">ct_1</span><span class="plain">={-</span><span class="identifier">my</span><span class="plain">:2})</span>
|
|
<span class="identifier">if</span><span class="plain"> (</span><span class="identifier">TableRowIsBlank</span><span class="plain">(</span><span class="identifier">ct_0</span><span class="plain">, </span><span class="identifier">ct_1</span><span class="plain">)==</span><span class="identifier">false</span><span class="plain">)</span>
|
|
<span class="plain">{-</span><span class="identifier">block</span><span class="plain">}</span>
|
|
<span class="plain">@</span><span class="identifier">pull</span><span class="plain"> {-</span><span class="identifier">my</span><span class="plain">:</span><span class="identifier">ct_1</span><span class="plain">}; @</span><span class="identifier">pull</span><span class="plain"> {-</span><span class="identifier">my</span><span class="plain">:</span><span class="identifier">ct_0</span><span class="plain">};</span>
|
|
<span class="plain">-).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">repeat</span><span class="plain"> </span><span class="identifier">through</span><span class="plain"> (</span><span class="identifier">T</span><span class="plain"> - </span><span class="identifier">table</span><span class="plain"> </span><span class="identifier">name</span><span class="plain">) </span><span class="identifier">in</span><span class="plain"> (</span><span class="identifier">TC</span><span class="plain"> - </span><span class="identifier">table</span><span class="plain"> </span><span class="identifier">column</span><span class="plain">) </span><span class="identifier">order</span><span class="plain"> </span><span class="identifier">begin</span><span class="plain"> -- </span><span class="identifier">end</span><span class="plain"> </span><span class="identifier">loop</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_repeattablecol</span><span class="plain">): (-</span>
|
|
<span class="plain">@</span><span class="identifier">push</span><span class="plain"> {-</span><span class="identifier">my</span><span class="plain">:</span><span class="identifier">ct_0</span><span class="plain">}; @</span><span class="identifier">push</span><span class="plain"> {-</span><span class="identifier">my</span><span class="plain">:</span><span class="identifier">ct_1</span><span class="plain">};</span>
|
|
<span class="identifier">for</span><span class="plain"> ({-</span><span class="identifier">my</span><span class="plain">:1}={</span><span class="identifier">T</span><span class="plain">}, {-</span><span class="identifier">my</span><span class="plain">:2}=</span><span class="identifier">TableNextRow</span><span class="plain">({-</span><span class="identifier">my</span><span class="plain">:1}, {</span><span class="identifier">TC</span><span class="plain">}, </span><span class="constant">0</span><span class="plain">, </span><span class="constant">1</span><span class="plain">), </span><span class="identifier">ct_0</span><span class="plain">={-</span><span class="identifier">my</span><span class="plain">:1}, </span><span class="identifier">ct_1</span><span class="plain">={-</span><span class="identifier">my</span><span class="plain">:2}:</span>
|
|
<span class="plain">{-</span><span class="identifier">my</span><span class="plain">:2}~=0:</span>
|
|
<span class="plain">{-</span><span class="identifier">my</span><span class="plain">:2}=</span><span class="identifier">TableNextRow</span><span class="plain">({-</span><span class="identifier">my</span><span class="plain">:1}, {</span><span class="identifier">TC</span><span class="plain">}, {-</span><span class="identifier">my</span><span class="plain">:2}, </span><span class="constant">1</span><span class="plain">), </span><span class="identifier">ct_0</span><span class="plain">={-</span><span class="identifier">my</span><span class="plain">:1}, </span><span class="identifier">ct_1</span><span class="plain">={-</span><span class="identifier">my</span><span class="plain">:2})</span>
|
|
<span class="plain">{-</span><span class="identifier">block</span><span class="plain">}</span>
|
|
<span class="plain">@</span><span class="identifier">pull</span><span class="plain"> {-</span><span class="identifier">my</span><span class="plain">:</span><span class="identifier">ct_1</span><span class="plain">}; @</span><span class="identifier">pull</span><span class="plain"> {-</span><span class="identifier">my</span><span class="plain">:</span><span class="identifier">ct_0</span><span class="plain">};</span>
|
|
<span class="plain">-).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">repeat</span><span class="plain"> </span><span class="identifier">through</span><span class="plain"> (</span><span class="identifier">T</span><span class="plain"> - </span><span class="identifier">table</span><span class="plain"> </span><span class="identifier">name</span><span class="plain">) </span><span class="identifier">in</span><span class="plain"> </span><span class="identifier">reverse</span><span class="plain"> (</span><span class="identifier">TC</span><span class="plain"> - </span><span class="identifier">table</span><span class="plain"> </span><span class="identifier">column</span><span class="plain">) </span><span class="identifier">order</span><span class="plain"> </span><span class="identifier">begin</span><span class="plain"> -- </span><span class="identifier">end</span><span class="plain"> </span><span class="identifier">loop</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_repeattablecolreverse</span><span class="plain">): (-</span>
|
|
<span class="plain">@</span><span class="identifier">push</span><span class="plain"> {-</span><span class="identifier">my</span><span class="plain">:</span><span class="identifier">ct_0</span><span class="plain">}; @</span><span class="identifier">push</span><span class="plain"> {-</span><span class="identifier">my</span><span class="plain">:</span><span class="identifier">ct_1</span><span class="plain">};</span>
|
|
<span class="identifier">for</span><span class="plain"> ({-</span><span class="identifier">my</span><span class="plain">:1}={</span><span class="identifier">T</span><span class="plain">}, {-</span><span class="identifier">my</span><span class="plain">:2}=</span><span class="identifier">TableNextRow</span><span class="plain">({-</span><span class="identifier">my</span><span class="plain">:1}, {</span><span class="identifier">TC</span><span class="plain">}, </span><span class="constant">0</span><span class="plain">, -1), </span><span class="identifier">ct_0</span><span class="plain">={-</span><span class="identifier">my</span><span class="plain">:1}, </span><span class="identifier">ct_1</span><span class="plain">={-</span><span class="identifier">my</span><span class="plain">:2}:</span>
|
|
<span class="plain">{-</span><span class="identifier">my</span><span class="plain">:2}~=0:</span>
|
|
<span class="plain">{-</span><span class="identifier">my</span><span class="plain">:2}=</span><span class="identifier">TableNextRow</span><span class="plain">({-</span><span class="identifier">my</span><span class="plain">:1}, {</span><span class="identifier">TC</span><span class="plain">}, {-</span><span class="identifier">my</span><span class="plain">:2}, -1), </span><span class="identifier">ct_0</span><span class="plain">={-</span><span class="identifier">my</span><span class="plain">:1}, </span><span class="identifier">ct_1</span><span class="plain">={-</span><span class="identifier">my</span><span class="plain">:2})</span>
|
|
<span class="plain">{-</span><span class="identifier">block</span><span class="plain">}</span>
|
|
<span class="plain">@</span><span class="identifier">pull</span><span class="plain"> {-</span><span class="identifier">my</span><span class="plain">:</span><span class="identifier">ct_1</span><span class="plain">}; @</span><span class="identifier">pull</span><span class="plain"> {-</span><span class="identifier">my</span><span class="plain">:</span><span class="identifier">ct_0</span><span class="plain">};</span>
|
|
<span class="plain">-).</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP28"></a><b>§28. </b>The equivalent of <code class="display"><span class="extract">break</span></code> or <code class="display"><span class="extract">continue</span></code> in C or I6, or of <code class="display"><span class="extract">last</span></code> or <code class="display"><span class="extract">next</span></code>
|
|
in Perl. Here "in loop" means "in any of the forms of while or repeat".
|
|
</p>
|
|
|
|
<p class="inwebparagraph">See test case <code class="display"><span class="extract">BIP-Break</span></code>.
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">Section</span><span class="plain"> </span><span class="constant">4</span><span class="plain"> - </span><span class="identifier">Loop</span><span class="plain"> </span><span class="identifier">Flow</span>
|
|
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">break</span><span class="plain"> -- </span><span class="identifier">in</span><span class="plain"> </span><span class="identifier">loop</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_break</span><span class="plain">):</span>
|
|
<span class="plain">(- {-</span><span class="identifier">primitive</span><span class="plain">-</span><span class="identifier">definition</span><span class="plain">:</span><span class="identifier">break</span><span class="plain">} -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">next</span><span class="plain"> -- </span><span class="identifier">in</span><span class="plain"> </span><span class="identifier">loop</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_next</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">continue</span><span class="plain">; -).</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP29"></a><b>§29. Values. </b>Some of the things we can do with enumerations, others being listed under
|
|
randomness below.
|
|
</p>
|
|
|
|
<p class="inwebparagraph">See test case <code class="display"><span class="extract">BIP-Enumerations</span></code>.
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">Chapter</span><span class="plain"> </span><span class="constant">4</span><span class="plain"> - </span><span class="identifier">Values</span>
|
|
|
|
<span class="identifier">Section</span><span class="plain"> </span><span class="constant">1</span><span class="plain"> - </span><span class="identifier">Enumerations</span>
|
|
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">which</span><span class="plain"> </span><span class="identifier">number</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">number</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> (</span><span class="identifier">S</span><span class="plain"> - </span><span class="identifier">description</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">values</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_numberof</span><span class="plain">):</span>
|
|
<span class="plain">(- {-</span><span class="identifier">primitive</span><span class="plain">-</span><span class="identifier">definition</span><span class="plain">:</span><span class="identifier">number</span><span class="plain">-</span><span class="identifier">of</span><span class="plain">} -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">which</span><span class="plain"> </span><span class="identifier">K</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> (</span><span class="identifier">name</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">kind</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">enumerated</span><span class="plain"> </span><span class="identifier">value</span><span class="plain"> </span><span class="identifier">K</span><span class="plain">) </span><span class="identifier">after</span><span class="plain"> (</span><span class="identifier">X</span><span class="plain"> - </span><span class="identifier">K</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_enumafter</span><span class="plain">):</span>
|
|
<span class="plain">(- {-</span><span class="identifier">next</span><span class="plain">-</span><span class="identifier">routine</span><span class="plain">:</span><span class="identifier">K</span><span class="plain">}({</span><span class="identifier">X</span><span class="plain">}) -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">which</span><span class="plain"> </span><span class="identifier">K</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> (</span><span class="identifier">name</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">kind</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">enumerated</span><span class="plain"> </span><span class="identifier">value</span><span class="plain"> </span><span class="identifier">K</span><span class="plain">) </span><span class="identifier">before</span><span class="plain"> (</span><span class="identifier">X</span><span class="plain"> - </span><span class="identifier">K</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_enumbefore</span><span class="plain">):</span>
|
|
<span class="plain">(- {-</span><span class="identifier">previous</span><span class="plain">-</span><span class="identifier">routine</span><span class="plain">:</span><span class="identifier">K</span><span class="plain">}({</span><span class="identifier">X</span><span class="plain">}) -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">which</span><span class="plain"> </span><span class="identifier">K</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">first</span><span class="plain"> </span><span class="identifier">value</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> (</span><span class="identifier">name</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">kind</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">enumerated</span><span class="plain"> </span><span class="identifier">value</span><span class="plain"> </span><span class="identifier">K</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_enumfirst</span><span class="plain">):</span>
|
|
<span class="identifier">decide</span><span class="plain"> </span><span class="identifier">on</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">default</span><span class="plain"> </span><span class="identifier">value</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">K</span><span class="plain">.</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">which</span><span class="plain"> </span><span class="identifier">K</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">last</span><span class="plain"> </span><span class="identifier">value</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> (</span><span class="identifier">name</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">kind</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">enumerated</span><span class="plain"> </span><span class="identifier">value</span><span class="plain"> </span><span class="identifier">K</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_enumlast</span><span class="plain">):</span>
|
|
<span class="identifier">decide</span><span class="plain"> </span><span class="identifier">on</span><span class="plain"> </span><span class="identifier">K</span><span class="plain"> </span><span class="identifier">before</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">default</span><span class="plain"> </span><span class="identifier">value</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">K</span><span class="plain">.</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP30"></a><b>§30. </b>Random numbers and random items chosen from sets of objects matching a
|
|
given description ("a random closed door").
|
|
</p>
|
|
|
|
<p class="inwebparagraph">See test case <code class="display"><span class="extract">BIP-Randomness</span></code>.
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">Section</span><span class="plain"> </span><span class="constant">2</span><span class="plain"> - </span><span class="identifier">Randomness</span>
|
|
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">which</span><span class="plain"> </span><span class="identifier">K</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">a</span><span class="plain">/-- </span><span class="identifier">random</span><span class="plain"> (</span><span class="identifier">S</span><span class="plain"> - </span><span class="identifier">description</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">values</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">kind</span><span class="plain"> </span><span class="identifier">K</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_randomdesc</span><span class="plain">):</span>
|
|
<span class="plain">(- {-</span><span class="identifier">primitive</span><span class="plain">-</span><span class="identifier">definition</span><span class="plain">:</span><span class="identifier">random</span><span class="plain">-</span><span class="identifier">of</span><span class="plain">} -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">which</span><span class="plain"> </span><span class="identifier">K</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">random</span><span class="plain"> (</span><span class="identifier">name</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">kind</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">arithmetic</span><span class="plain"> </span><span class="identifier">value</span><span class="plain"> </span><span class="identifier">K</span><span class="plain">) </span><span class="identifier">between</span><span class="plain"> (</span><span class="identifier">first</span><span class="plain"> </span><span class="identifier">value</span><span class="plain"> - </span><span class="identifier">K</span><span class="plain">) </span><span class="identifier">and</span><span class="plain"> (</span><span class="identifier">second</span><span class="plain"> </span><span class="identifier">value</span><span class="plain"> - </span><span class="identifier">K</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_randombetween</span><span class="plain">):</span>
|
|
<span class="plain">(- {-</span><span class="identifier">ranger</span><span class="plain">-</span><span class="identifier">routine</span><span class="plain">:</span><span class="identifier">K</span><span class="plain">}({</span><span class="identifier">first</span><span class="plain"> </span><span class="identifier">value</span><span class="plain">}, {</span><span class="identifier">second</span><span class="plain"> </span><span class="identifier">value</span><span class="plain">}) -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">which</span><span class="plain"> </span><span class="identifier">K</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">random</span><span class="plain"> (</span><span class="identifier">name</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">kind</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">arithmetic</span><span class="plain"> </span><span class="identifier">value</span><span class="plain"> </span><span class="identifier">K</span><span class="plain">) </span><span class="identifier">from</span><span class="plain"> (</span><span class="identifier">first</span><span class="plain"> </span><span class="identifier">value</span><span class="plain"> - </span><span class="identifier">K</span><span class="plain">) </span><span class="identifier">to</span><span class="plain"> (</span><span class="identifier">second</span><span class="plain"> </span><span class="identifier">value</span><span class="plain"> - </span><span class="identifier">K</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_randombetween</span><span class="plain">):</span>
|
|
<span class="plain">(- {-</span><span class="identifier">ranger</span><span class="plain">-</span><span class="identifier">routine</span><span class="plain">:</span><span class="identifier">K</span><span class="plain">}({</span><span class="identifier">first</span><span class="plain"> </span><span class="identifier">value</span><span class="plain">}, {</span><span class="identifier">second</span><span class="plain"> </span><span class="identifier">value</span><span class="plain">}) -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">which</span><span class="plain"> </span><span class="identifier">K</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">random</span><span class="plain"> (</span><span class="identifier">name</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">kind</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">enumerated</span><span class="plain"> </span><span class="identifier">value</span><span class="plain"> </span><span class="identifier">K</span><span class="plain">) </span><span class="identifier">between</span><span class="plain"> (</span><span class="identifier">first</span><span class="plain"> </span><span class="identifier">value</span><span class="plain"> - </span><span class="identifier">K</span><span class="plain">) </span><span class="identifier">and</span><span class="plain"> (</span><span class="identifier">second</span><span class="plain"> </span><span class="identifier">value</span><span class="plain"> - </span><span class="identifier">K</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_randombetween</span><span class="plain">):</span>
|
|
<span class="plain">(- {-</span><span class="identifier">ranger</span><span class="plain">-</span><span class="identifier">routine</span><span class="plain">:</span><span class="identifier">K</span><span class="plain">}({</span><span class="identifier">first</span><span class="plain"> </span><span class="identifier">value</span><span class="plain">}, {</span><span class="identifier">second</span><span class="plain"> </span><span class="identifier">value</span><span class="plain">}) -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">which</span><span class="plain"> </span><span class="identifier">K</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">random</span><span class="plain"> (</span><span class="identifier">name</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">kind</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">enumerated</span><span class="plain"> </span><span class="identifier">value</span><span class="plain"> </span><span class="identifier">K</span><span class="plain">) </span><span class="identifier">from</span><span class="plain"> (</span><span class="identifier">first</span><span class="plain"> </span><span class="identifier">value</span><span class="plain"> - </span><span class="identifier">K</span><span class="plain">) </span><span class="identifier">to</span><span class="plain"> (</span><span class="identifier">second</span><span class="plain"> </span><span class="identifier">value</span><span class="plain"> - </span><span class="identifier">K</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_randombetween</span><span class="plain">):</span>
|
|
<span class="plain">(- {-</span><span class="identifier">ranger</span><span class="plain">-</span><span class="identifier">routine</span><span class="plain">:</span><span class="identifier">K</span><span class="plain">}({</span><span class="identifier">first</span><span class="plain"> </span><span class="identifier">value</span><span class="plain">}, {</span><span class="identifier">second</span><span class="plain"> </span><span class="identifier">value</span><span class="plain">}) -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">whether</span><span class="plain"> </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">random</span><span class="plain"> </span><span class="identifier">chance</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> (</span><span class="identifier">N</span><span class="plain"> - </span><span class="identifier">number</span><span class="plain">) </span><span class="identifier">in</span><span class="plain"> (</span><span class="identifier">M</span><span class="plain"> - </span><span class="identifier">number</span><span class="plain">) </span><span class="identifier">succeeds</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_randomchance</span><span class="plain">):</span>
|
|
<span class="plain">(- (</span><span class="identifier">GenerateRandomNumber</span><span class="plain">(1, {</span><span class="identifier">M</span><span class="plain">}) <= {</span><span class="identifier">N</span><span class="plain">}) -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">seed</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">random</span><span class="plain">-</span><span class="identifier">number</span><span class="plain"> </span><span class="identifier">generator</span><span class="plain"> </span><span class="identifier">with</span><span class="plain"> (</span><span class="identifier">N</span><span class="plain"> - </span><span class="identifier">number</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_seed</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">VM_Seed_RNG</span><span class="plain">({</span><span class="identifier">N</span><span class="plain">}); -).</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP31"></a><b>§31. </b>A novel feature of Inform is that there is a default value of any kind: fpr
|
|
example, it is 0 for a number, or the empty text for text. When Inform compiles
|
|
a value of a given kind but isn't told what value to compile, it always
|
|
chooses the default, which is why the following definition works.
|
|
</p>
|
|
|
|
<p class="inwebparagraph">See test case <code class="display"><span class="extract">BIP-DefaultValues</span></code>.
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">Section</span><span class="plain"> </span><span class="constant">3</span><span class="plain"> - </span><span class="identifier">Default</span><span class="plain"> </span><span class="identifier">Values</span>
|
|
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">what</span><span class="plain"> </span><span class="identifier">K</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">default</span><span class="plain"> </span><span class="identifier">value</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> (</span><span class="identifier">V</span><span class="plain"> - </span><span class="identifier">name</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">kind</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">value</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">kind</span><span class="plain"> </span><span class="identifier">K</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_defaultvalue</span><span class="plain">):</span>
|
|
<span class="plain">(- {-</span><span class="identifier">new</span><span class="plain">:</span><span class="identifier">K</span><span class="plain">} -).</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP32"></a><b>§32. Text. </b>Inform programs swim in a sea of texts, and most of the ways to make text
|
|
involve substitutions; so phrases to manipulate text are nice to have, but
|
|
are bonuses rather than being the essentials.
|
|
</p>
|
|
|
|
<p class="inwebparagraph">As repetitive as the following is, it's much simpler and less prone to
|
|
possible namespace trouble if we don't define kinds of value for the different
|
|
structural levels of text (character, word, punctuated word, etc.).
|
|
</p>
|
|
|
|
<p class="inwebparagraph">See test case <code class="display"><span class="extract">BIP-Texts</span></code>.
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">Chapter</span><span class="plain"> </span><span class="constant">5</span><span class="plain"> - </span><span class="identifier">Text</span>
|
|
|
|
<span class="identifier">Section</span><span class="plain"> </span><span class="constant">1</span><span class="plain"> - </span><span class="identifier">Breaking</span><span class="plain"> </span><span class="identifier">down</span><span class="plain"> </span><span class="identifier">text</span>
|
|
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">what</span><span class="plain"> </span><span class="identifier">number</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">number</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">characters</span><span class="plain"> </span><span class="identifier">in</span><span class="plain"> (</span><span class="identifier">T</span><span class="plain"> - </span><span class="identifier">text</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_numchars</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">TEXT_TY_BlobAccess</span><span class="plain">({-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">T</span><span class="plain">}, </span><span class="identifier">CHR_BLOB</span><span class="plain">) -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">what</span><span class="plain"> </span><span class="identifier">number</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">number</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">words</span><span class="plain"> </span><span class="identifier">in</span><span class="plain"> (</span><span class="identifier">T</span><span class="plain"> - </span><span class="identifier">text</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_numwords</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">TEXT_TY_BlobAccess</span><span class="plain">({-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">T</span><span class="plain">}, </span><span class="identifier">WORD_BLOB</span><span class="plain">) -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">what</span><span class="plain"> </span><span class="identifier">number</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">number</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">punctuated</span><span class="plain"> </span><span class="identifier">words</span><span class="plain"> </span><span class="identifier">in</span><span class="plain"> (</span><span class="identifier">T</span><span class="plain"> - </span><span class="identifier">text</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_numpwords</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">TEXT_TY_BlobAccess</span><span class="plain">({-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">T</span><span class="plain">}, </span><span class="identifier">PWORD_BLOB</span><span class="plain">) -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">what</span><span class="plain"> </span><span class="identifier">number</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">number</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">unpunctuated</span><span class="plain"> </span><span class="identifier">words</span><span class="plain"> </span><span class="identifier">in</span><span class="plain"> (</span><span class="identifier">T</span><span class="plain"> - </span><span class="identifier">text</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_numupwords</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">TEXT_TY_BlobAccess</span><span class="plain">({-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">T</span><span class="plain">}, </span><span class="identifier">UWORD_BLOB</span><span class="plain">) -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">what</span><span class="plain"> </span><span class="identifier">number</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">number</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">lines</span><span class="plain"> </span><span class="identifier">in</span><span class="plain"> (</span><span class="identifier">T</span><span class="plain"> - </span><span class="identifier">text</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_numlines</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">TEXT_TY_BlobAccess</span><span class="plain">({-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">T</span><span class="plain">}, </span><span class="identifier">LINE_BLOB</span><span class="plain">) -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">what</span><span class="plain"> </span><span class="identifier">number</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">number</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">paragraphs</span><span class="plain"> </span><span class="identifier">in</span><span class="plain"> (</span><span class="identifier">T</span><span class="plain"> - </span><span class="identifier">text</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_numparas</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">TEXT_TY_BlobAccess</span><span class="plain">({-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">T</span><span class="plain">}, </span><span class="identifier">PARA_BLOB</span><span class="plain">) -).</span>
|
|
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">what</span><span class="plain"> </span><span class="identifier">text</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">character</span><span class="plain"> </span><span class="identifier">number</span><span class="plain"> (</span><span class="identifier">N</span><span class="plain"> - </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">number</span><span class="plain">) </span><span class="identifier">in</span><span class="plain"> (</span><span class="identifier">T</span><span class="plain"> - </span><span class="identifier">text</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_charnum</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">TEXT_TY_GetBlob</span><span class="plain">({-</span><span class="identifier">new</span><span class="plain">:</span><span class="identifier">text</span><span class="plain">}, {-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">T</span><span class="plain">}, {</span><span class="identifier">N</span><span class="plain">}, </span><span class="identifier">CHR_BLOB</span><span class="plain">) -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">what</span><span class="plain"> </span><span class="identifier">text</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">word</span><span class="plain"> </span><span class="identifier">number</span><span class="plain"> (</span><span class="identifier">N</span><span class="plain"> - </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">number</span><span class="plain">) </span><span class="identifier">in</span><span class="plain"> (</span><span class="identifier">T</span><span class="plain"> - </span><span class="identifier">text</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_wordnum</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">TEXT_TY_GetBlob</span><span class="plain">({-</span><span class="identifier">new</span><span class="plain">:</span><span class="identifier">text</span><span class="plain">}, {-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">T</span><span class="plain">}, {</span><span class="identifier">N</span><span class="plain">}, </span><span class="identifier">WORD_BLOB</span><span class="plain">) -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">what</span><span class="plain"> </span><span class="identifier">text</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">punctuated</span><span class="plain"> </span><span class="identifier">word</span><span class="plain"> </span><span class="identifier">number</span><span class="plain"> (</span><span class="identifier">N</span><span class="plain"> - </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">number</span><span class="plain">) </span><span class="identifier">in</span><span class="plain"> (</span><span class="identifier">T</span><span class="plain"> - </span><span class="identifier">text</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_pwordnum</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">TEXT_TY_GetBlob</span><span class="plain">({-</span><span class="identifier">new</span><span class="plain">:</span><span class="identifier">text</span><span class="plain">}, {-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">T</span><span class="plain">}, {</span><span class="identifier">N</span><span class="plain">}, </span><span class="identifier">PWORD_BLOB</span><span class="plain">) -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">what</span><span class="plain"> </span><span class="identifier">text</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">unpunctuated</span><span class="plain"> </span><span class="identifier">word</span><span class="plain"> </span><span class="identifier">number</span><span class="plain"> (</span><span class="identifier">N</span><span class="plain"> - </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">number</span><span class="plain">) </span><span class="identifier">in</span><span class="plain"> (</span><span class="identifier">T</span><span class="plain"> - </span><span class="identifier">text</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_upwordnum</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">TEXT_TY_GetBlob</span><span class="plain">({-</span><span class="identifier">new</span><span class="plain">:</span><span class="identifier">text</span><span class="plain">}, {-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">T</span><span class="plain">}, {</span><span class="identifier">N</span><span class="plain">}, </span><span class="identifier">UWORD_BLOB</span><span class="plain">) -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">what</span><span class="plain"> </span><span class="identifier">text</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">line</span><span class="plain"> </span><span class="identifier">number</span><span class="plain"> (</span><span class="identifier">N</span><span class="plain"> - </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">number</span><span class="plain">) </span><span class="identifier">in</span><span class="plain"> (</span><span class="identifier">T</span><span class="plain"> - </span><span class="identifier">text</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_linenum</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">TEXT_TY_GetBlob</span><span class="plain">({-</span><span class="identifier">new</span><span class="plain">:</span><span class="identifier">text</span><span class="plain">}, {-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">T</span><span class="plain">}, {</span><span class="identifier">N</span><span class="plain">}, </span><span class="identifier">LINE_BLOB</span><span class="plain">) -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">what</span><span class="plain"> </span><span class="identifier">text</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">paragraph</span><span class="plain"> </span><span class="identifier">number</span><span class="plain"> (</span><span class="identifier">N</span><span class="plain"> - </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">number</span><span class="plain">) </span><span class="identifier">in</span><span class="plain"> (</span><span class="identifier">T</span><span class="plain"> - </span><span class="identifier">text</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_paranum</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">TEXT_TY_GetBlob</span><span class="plain">({-</span><span class="identifier">new</span><span class="plain">:</span><span class="identifier">text</span><span class="plain">}, {-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">T</span><span class="plain">}, {</span><span class="identifier">N</span><span class="plain">}, </span><span class="identifier">PARA_BLOB</span><span class="plain">) -).</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP33"></a><b>§33. </b>The "substituted form of" is a technicality most Inform users never need to
|
|
think about; as a one-off phrase, it may as well go here.
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">what</span><span class="plain"> </span><span class="identifier">text</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">substituted</span><span class="plain"> </span><span class="identifier">form</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> (</span><span class="identifier">T</span><span class="plain"> - </span><span class="identifier">text</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_subform</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">TEXT_TY_SubstitutedForm</span><span class="plain">({-</span><span class="identifier">new</span><span class="plain">:</span><span class="identifier">text</span><span class="plain">}, {-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">T</span><span class="plain">}) -).</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP34"></a><b>§34. </b>A common matching engine is used for matching plain text...
|
|
</p>
|
|
|
|
<p class="inwebparagraph">See test case <code class="display"><span class="extract">BIP-TextReplacement</span></code>.
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">Section</span><span class="plain"> </span><span class="constant">2</span><span class="plain"> - </span><span class="identifier">Matching</span><span class="plain"> </span><span class="identifier">and</span><span class="plain"> </span><span class="identifier">Replacing</span>
|
|
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">if</span><span class="plain"> (</span><span class="identifier">T</span><span class="plain"> - </span><span class="identifier">text</span><span class="plain">) </span><span class="identifier">exactly</span><span class="plain"> </span><span class="identifier">matches</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">text</span><span class="plain"> (</span><span class="identifier">find</span><span class="plain"> - </span><span class="identifier">text</span><span class="plain">),</span>
|
|
<span class="identifier">case</span><span class="plain"> </span><span class="identifier">insensitively</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_exactlymatches</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">TEXT_TY_Replace_RE</span><span class="plain">(</span><span class="identifier">CHR_BLOB</span><span class="plain">,{-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">T</span><span class="plain">},{-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">find</span><span class="plain">},0,{</span><span class="identifier">phrase</span><span class="plain"> </span><span class="identifier">options</span><span class="plain">},1) -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">if</span><span class="plain"> (</span><span class="identifier">T</span><span class="plain"> - </span><span class="identifier">text</span><span class="plain">) </span><span class="identifier">matches</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">text</span><span class="plain"> (</span><span class="identifier">find</span><span class="plain"> - </span><span class="identifier">text</span><span class="plain">),</span>
|
|
<span class="identifier">case</span><span class="plain"> </span><span class="identifier">insensitively</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_matches</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">TEXT_TY_Replace_RE</span><span class="plain">(</span><span class="identifier">CHR_BLOB</span><span class="plain">,{-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">T</span><span class="plain">},{-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">find</span><span class="plain">},0,{</span><span class="identifier">phrase</span><span class="plain"> </span><span class="identifier">options</span><span class="plain">}) -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">what</span><span class="plain"> </span><span class="identifier">number</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">number</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">times</span><span class="plain"> (</span><span class="identifier">T</span><span class="plain"> - </span><span class="identifier">text</span><span class="plain">) </span><span class="identifier">matches</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">text</span>
|
|
<span class="plain">(</span><span class="identifier">find</span><span class="plain"> - </span><span class="identifier">text</span><span class="plain">), </span><span class="identifier">case</span><span class="plain"> </span><span class="identifier">insensitively</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_nummatches</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">TEXT_TY_Replace_RE</span><span class="plain">(</span><span class="identifier">CHR_BLOB</span><span class="plain">,{-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">T</span><span class="plain">},{-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">find</span><span class="plain">},1,{</span><span class="identifier">phrase</span><span class="plain"> </span><span class="identifier">options</span><span class="plain">}) -).</span>
|
|
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">replace</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">text</span><span class="plain"> (</span><span class="identifier">find</span><span class="plain"> - </span><span class="identifier">text</span><span class="plain">) </span><span class="identifier">in</span><span class="plain"> (</span><span class="identifier">T</span><span class="plain"> - </span><span class="identifier">text</span><span class="plain">) </span><span class="identifier">with</span><span class="plain"> (</span><span class="identifier">replace</span><span class="plain"> - </span><span class="identifier">text</span><span class="plain">),</span>
|
|
<span class="identifier">case</span><span class="plain"> </span><span class="identifier">insensitively</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_replace</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">TEXT_TY_Replace_RE</span><span class="plain">(</span><span class="identifier">CHR_BLOB</span><span class="plain">, {-</span><span class="identifier">lvalue</span><span class="plain">-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">T</span><span class="plain">}, {-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">find</span><span class="plain">},</span>
|
|
<span class="plain">{-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">replace</span><span class="plain">}, {</span><span class="identifier">phrase</span><span class="plain"> </span><span class="identifier">options</span><span class="plain">}); -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">replace</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">word</span><span class="plain"> (</span><span class="identifier">find</span><span class="plain"> - </span><span class="identifier">text</span><span class="plain">) </span><span class="identifier">in</span><span class="plain"> (</span><span class="identifier">T</span><span class="plain"> - </span><span class="identifier">text</span><span class="plain">) </span><span class="identifier">with</span>
|
|
<span class="plain">(</span><span class="identifier">replace</span><span class="plain"> - </span><span class="identifier">text</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_replacewordin</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">TEXT_TY_ReplaceText</span><span class="plain">(</span><span class="identifier">WORD_BLOB</span><span class="plain">, {-</span><span class="identifier">lvalue</span><span class="plain">-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">T</span><span class="plain">}, {-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">find</span><span class="plain">}, {-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">replace</span><span class="plain">}); -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">replace</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">punctuated</span><span class="plain"> </span><span class="identifier">word</span><span class="plain"> (</span><span class="identifier">find</span><span class="plain"> - </span><span class="identifier">text</span><span class="plain">) </span><span class="identifier">in</span><span class="plain"> (</span><span class="identifier">T</span><span class="plain"> - </span><span class="identifier">text</span><span class="plain">)</span>
|
|
<span class="identifier">with</span><span class="plain"> (</span><span class="identifier">replace</span><span class="plain"> - </span><span class="identifier">text</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_replacepwordin</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">TEXT_TY_ReplaceText</span><span class="plain">(</span><span class="identifier">PWORD_BLOB</span><span class="plain">, {-</span><span class="identifier">lvalue</span><span class="plain">-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">T</span><span class="plain">}, {-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">find</span><span class="plain">}, {-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">replace</span><span class="plain">}); -).</span>
|
|
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">replace</span><span class="plain"> </span><span class="identifier">character</span><span class="plain"> </span><span class="identifier">number</span><span class="plain"> (</span><span class="identifier">N</span><span class="plain"> - </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">number</span><span class="plain">) </span><span class="identifier">in</span><span class="plain"> (</span><span class="identifier">T</span><span class="plain"> - </span><span class="identifier">text</span><span class="plain">)</span>
|
|
<span class="identifier">with</span><span class="plain"> (</span><span class="identifier">replace</span><span class="plain"> - </span><span class="identifier">text</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_replacechar</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">TEXT_TY_ReplaceBlob</span><span class="plain">(</span><span class="identifier">CHR_BLOB</span><span class="plain">, {-</span><span class="identifier">lvalue</span><span class="plain">-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">T</span><span class="plain">}, {</span><span class="identifier">N</span><span class="plain">}, {-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">replace</span><span class="plain">}); -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">replace</span><span class="plain"> </span><span class="identifier">word</span><span class="plain"> </span><span class="identifier">number</span><span class="plain"> (</span><span class="identifier">N</span><span class="plain"> - </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">number</span><span class="plain">) </span><span class="identifier">in</span><span class="plain"> (</span><span class="identifier">T</span><span class="plain"> - </span><span class="identifier">text</span><span class="plain">)</span>
|
|
<span class="identifier">with</span><span class="plain"> (</span><span class="identifier">replace</span><span class="plain"> - </span><span class="identifier">text</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_replaceword</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">TEXT_TY_ReplaceBlob</span><span class="plain">(</span><span class="identifier">WORD_BLOB</span><span class="plain">, {-</span><span class="identifier">lvalue</span><span class="plain">-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">T</span><span class="plain">}, {</span><span class="identifier">N</span><span class="plain">}, {-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">replace</span><span class="plain">}); -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">replace</span><span class="plain"> </span><span class="identifier">punctuated</span><span class="plain"> </span><span class="identifier">word</span><span class="plain"> </span><span class="identifier">number</span><span class="plain"> (</span><span class="identifier">N</span><span class="plain"> - </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">number</span><span class="plain">) </span><span class="identifier">in</span><span class="plain"> (</span><span class="identifier">T</span><span class="plain"> - </span><span class="identifier">text</span><span class="plain">)</span>
|
|
<span class="identifier">with</span><span class="plain"> (</span><span class="identifier">replace</span><span class="plain"> - </span><span class="identifier">text</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_replacepword</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">TEXT_TY_ReplaceBlob</span><span class="plain">(</span><span class="identifier">PWORD_BLOB</span><span class="plain">, {-</span><span class="identifier">lvalue</span><span class="plain">-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">T</span><span class="plain">}, {</span><span class="identifier">N</span><span class="plain">}, {-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">replace</span><span class="plain">}); -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">replace</span><span class="plain"> </span><span class="identifier">unpunctuated</span><span class="plain"> </span><span class="identifier">word</span><span class="plain"> </span><span class="identifier">number</span><span class="plain"> (</span><span class="identifier">N</span><span class="plain"> - </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">number</span><span class="plain">) </span><span class="identifier">in</span><span class="plain"> (</span><span class="identifier">T</span><span class="plain"> - </span><span class="identifier">text</span><span class="plain">)</span>
|
|
<span class="identifier">with</span><span class="plain"> (</span><span class="identifier">replace</span><span class="plain"> - </span><span class="identifier">text</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_replaceupword</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">TEXT_TY_ReplaceBlob</span><span class="plain">(</span><span class="identifier">UWORD_BLOB</span><span class="plain">, {-</span><span class="identifier">lvalue</span><span class="plain">-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">T</span><span class="plain">}, {</span><span class="identifier">N</span><span class="plain">}, {-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">replace</span><span class="plain">}); -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">replace</span><span class="plain"> </span><span class="identifier">line</span><span class="plain"> </span><span class="identifier">number</span><span class="plain"> (</span><span class="identifier">N</span><span class="plain"> - </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">number</span><span class="plain">) </span><span class="identifier">in</span><span class="plain"> (</span><span class="identifier">T</span><span class="plain"> - </span><span class="identifier">text</span><span class="plain">) </span><span class="identifier">with</span><span class="plain"> (</span><span class="identifier">replace</span><span class="plain"> - </span><span class="identifier">text</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_replaceline</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">TEXT_TY_ReplaceBlob</span><span class="plain">(</span><span class="identifier">LINE_BLOB</span><span class="plain">, {-</span><span class="identifier">lvalue</span><span class="plain">-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">T</span><span class="plain">}, {</span><span class="identifier">N</span><span class="plain">}, {-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">replace</span><span class="plain">}); -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">replace</span><span class="plain"> </span><span class="identifier">paragraph</span><span class="plain"> </span><span class="identifier">number</span><span class="plain"> (</span><span class="identifier">N</span><span class="plain"> - </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">number</span><span class="plain">) </span><span class="identifier">in</span><span class="plain"> (</span><span class="identifier">T</span><span class="plain"> - </span><span class="identifier">text</span><span class="plain">) </span><span class="identifier">with</span><span class="plain"> (</span><span class="identifier">replace</span><span class="plain"> - </span><span class="identifier">text</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_replacepara</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">TEXT_TY_ReplaceBlob</span><span class="plain">(</span><span class="identifier">PARA_BLOB</span><span class="plain">, {-</span><span class="identifier">lvalue</span><span class="plain">-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">T</span><span class="plain">}, {</span><span class="identifier">N</span><span class="plain">}, {-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">replace</span><span class="plain">}); -).</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP35"></a><b>§35. </b>...and for regular expressions, though here we also have access to the
|
|
exact text which matched (not interesting in the plain text case since it's
|
|
the same as the search text, up to case at least), and the values of matched
|
|
subexpressions (which the plain text case doesn't have).
|
|
</p>
|
|
|
|
<p class="inwebparagraph">See test case <code class="display"><span class="extract">BIP-RegExp</span></code>.
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">Section</span><span class="plain"> </span><span class="constant">3</span><span class="plain"> - </span><span class="identifier">Regular</span><span class="plain"> </span><span class="identifier">Expressions</span>
|
|
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">if</span><span class="plain"> (</span><span class="identifier">T</span><span class="plain"> - </span><span class="identifier">text</span><span class="plain">) </span><span class="identifier">exactly</span><span class="plain"> </span><span class="identifier">matches</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">regular</span><span class="plain"> </span><span class="identifier">expression</span><span class="plain"> (</span><span class="identifier">find</span><span class="plain"> - </span><span class="identifier">text</span><span class="plain">),</span>
|
|
<span class="identifier">case</span><span class="plain"> </span><span class="identifier">insensitively</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_exactlymatchesre</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">TEXT_TY_Replace_RE</span><span class="plain">(</span><span class="identifier">REGEXP_BLOB</span><span class="plain">,{-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">T</span><span class="plain">},{-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">find</span><span class="plain">},0,{</span><span class="identifier">phrase</span><span class="plain"> </span><span class="identifier">options</span><span class="plain">},1) -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">if</span><span class="plain"> (</span><span class="identifier">T</span><span class="plain"> - </span><span class="identifier">text</span><span class="plain">) </span><span class="identifier">matches</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">regular</span><span class="plain"> </span><span class="identifier">expression</span><span class="plain"> (</span><span class="identifier">find</span><span class="plain"> - </span><span class="identifier">text</span><span class="plain">),</span>
|
|
<span class="identifier">case</span><span class="plain"> </span><span class="identifier">insensitively</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_matchesre</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">TEXT_TY_Replace_RE</span><span class="plain">(</span><span class="identifier">REGEXP_BLOB</span><span class="plain">,{-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">T</span><span class="plain">},{-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">find</span><span class="plain">},0,{</span><span class="identifier">phrase</span><span class="plain"> </span><span class="identifier">options</span><span class="plain">}) -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">what</span><span class="plain"> </span><span class="identifier">text</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">text</span><span class="plain"> </span><span class="identifier">matching</span><span class="plain"> </span><span class="identifier">regular</span><span class="plain"> </span><span class="identifier">expression</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_matchtext</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">TEXT_TY_RE_GetMatchVar</span><span class="plain">(0) -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">what</span><span class="plain"> </span><span class="identifier">text</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">text</span><span class="plain"> </span><span class="identifier">matching</span><span class="plain"> </span><span class="identifier">subexpression</span><span class="plain"> (</span><span class="identifier">N</span><span class="plain"> - </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">number</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_subexpressiontext</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">TEXT_TY_RE_GetMatchVar</span><span class="plain">({</span><span class="identifier">N</span><span class="plain">}) -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">what</span><span class="plain"> </span><span class="identifier">number</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">number</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">times</span><span class="plain"> (</span><span class="identifier">T</span><span class="plain"> - </span><span class="identifier">text</span><span class="plain">) </span><span class="identifier">matches</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">regular</span><span class="plain"> </span><span class="identifier">expression</span>
|
|
<span class="plain">(</span><span class="identifier">find</span><span class="plain"> - </span><span class="identifier">text</span><span class="plain">),</span><span class="identifier">case</span><span class="plain"> </span><span class="identifier">insensitively</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_nummatchesre</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">TEXT_TY_Replace_RE</span><span class="plain">(</span><span class="identifier">REGEXP_BLOB</span><span class="plain">,{-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">T</span><span class="plain">},{-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">find</span><span class="plain">},1,{</span><span class="identifier">phrase</span><span class="plain"> </span><span class="identifier">options</span><span class="plain">}) -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">replace</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">regular</span><span class="plain"> </span><span class="identifier">expression</span><span class="plain"> (</span><span class="identifier">find</span><span class="plain"> - </span><span class="identifier">text</span><span class="plain">) </span><span class="identifier">in</span><span class="plain"> (</span><span class="identifier">T</span><span class="plain"> - </span><span class="identifier">text</span><span class="plain">) </span><span class="identifier">with</span>
|
|
<span class="plain">(</span><span class="identifier">replace</span><span class="plain"> - </span><span class="identifier">text</span><span class="plain">), </span><span class="identifier">case</span><span class="plain"> </span><span class="identifier">insensitively</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_replacere</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">TEXT_TY_Replace_RE</span><span class="plain">(</span><span class="identifier">REGEXP_BLOB</span><span class="plain">, {-</span><span class="identifier">lvalue</span><span class="plain">-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">T</span><span class="plain">}, {-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">find</span><span class="plain">},</span>
|
|
<span class="plain">{-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">replace</span><span class="plain">}, {</span><span class="identifier">phrase</span><span class="plain"> </span><span class="identifier">options</span><span class="plain">}); -).</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP36"></a><b>§36. </b>Casing of text.
|
|
</p>
|
|
|
|
<p class="inwebparagraph">See test case <code class="display"><span class="extract">BIP-TextCasing</span></code>.
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">Section</span><span class="plain"> </span><span class="constant">4</span><span class="plain"> - </span><span class="identifier">Casing</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">Text</span>
|
|
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">what</span><span class="plain"> </span><span class="identifier">text</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> (</span><span class="identifier">T</span><span class="plain"> - </span><span class="identifier">text</span><span class="plain">) </span><span class="identifier">in</span><span class="plain"> </span><span class="identifier">lower</span><span class="plain"> </span><span class="identifier">case</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_lowercase</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">TEXT_TY_CharactersToCase</span><span class="plain">({-</span><span class="identifier">new</span><span class="plain">:</span><span class="identifier">text</span><span class="plain">}, {-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">T</span><span class="plain">}, </span><span class="constant">0</span><span class="plain">) -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">what</span><span class="plain"> </span><span class="identifier">text</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> (</span><span class="identifier">T</span><span class="plain"> - </span><span class="identifier">text</span><span class="plain">) </span><span class="identifier">in</span><span class="plain"> </span><span class="identifier">upper</span><span class="plain"> </span><span class="identifier">case</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_uppercase</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">TEXT_TY_CharactersToCase</span><span class="plain">({-</span><span class="identifier">new</span><span class="plain">:</span><span class="identifier">text</span><span class="plain">}, {-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">T</span><span class="plain">}, </span><span class="constant">1</span><span class="plain">) -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">what</span><span class="plain"> </span><span class="identifier">text</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> (</span><span class="identifier">T</span><span class="plain"> - </span><span class="identifier">text</span><span class="plain">) </span><span class="identifier">in</span><span class="plain"> </span><span class="identifier">title</span><span class="plain"> </span><span class="identifier">case</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_titlecase</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">TEXT_TY_CharactersToCase</span><span class="plain">({-</span><span class="identifier">new</span><span class="plain">:</span><span class="identifier">text</span><span class="plain">}, {-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">T</span><span class="plain">}, </span><span class="constant">2</span><span class="plain">) -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">what</span><span class="plain"> </span><span class="identifier">text</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> (</span><span class="identifier">T</span><span class="plain"> - </span><span class="identifier">text</span><span class="plain">) </span><span class="identifier">in</span><span class="plain"> </span><span class="identifier">sentence</span><span class="plain"> </span><span class="identifier">case</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_sentencecase</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">TEXT_TY_CharactersToCase</span><span class="plain">({-</span><span class="identifier">new</span><span class="plain">:</span><span class="identifier">text</span><span class="plain">}, {-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">T</span><span class="plain">}, </span><span class="constant">3</span><span class="plain">) -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">if</span><span class="plain"> (</span><span class="identifier">T</span><span class="plain"> - </span><span class="identifier">text</span><span class="plain">) </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">in</span><span class="plain"> </span><span class="identifier">lower</span><span class="plain"> </span><span class="identifier">case</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_inlower</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">TEXT_TY_CharactersOfCase</span><span class="plain">({-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">T</span><span class="plain">}, </span><span class="constant">0</span><span class="plain">) -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">if</span><span class="plain"> (</span><span class="identifier">T</span><span class="plain"> - </span><span class="identifier">text</span><span class="plain">) </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">in</span><span class="plain"> </span><span class="identifier">upper</span><span class="plain"> </span><span class="identifier">case</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_inupper</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">TEXT_TY_CharactersOfCase</span><span class="plain">({-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">T</span><span class="plain">}, </span><span class="constant">1</span><span class="plain">) -).</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP37"></a><b>§37. Adaptive text. </b></p>
|
|
|
|
<p class="inwebparagraph">See test case <code class="display"><span class="extract">BIP-AdaptiveText</span></code>.
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">Section</span><span class="plain"> </span><span class="constant">5</span><span class="plain"> - </span><span class="identifier">Adaptive</span><span class="plain"> </span><span class="identifier">Text</span>
|
|
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">say</span><span class="plain"> </span><span class="identifier">infinitive</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> (</span><span class="identifier">V</span><span class="plain"> - </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">verb</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">phs_infinitive</span><span class="plain">):</span>
|
|
<span class="plain">(- {</span><span class="identifier">V</span><span class="plain">}(1); -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">say</span><span class="plain"> </span><span class="identifier">past</span><span class="plain"> </span><span class="identifier">participle</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> (</span><span class="identifier">V</span><span class="plain"> - </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">verb</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">phs_pastpart</span><span class="plain">):</span>
|
|
<span class="plain">(- {</span><span class="identifier">V</span><span class="plain">}(2); -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">say</span><span class="plain"> </span><span class="identifier">present</span><span class="plain"> </span><span class="identifier">participle</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> (</span><span class="identifier">V</span><span class="plain"> - </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">verb</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">phs_prespart</span><span class="plain">):</span>
|
|
<span class="plain">(- {</span><span class="identifier">V</span><span class="plain">}(3); -).</span>
|
|
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">say</span><span class="plain"> </span><span class="identifier">adapt</span><span class="plain"> (</span><span class="identifier">V</span><span class="plain"> - </span><span class="identifier">verb</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">phs_adapt</span><span class="plain">):</span>
|
|
<span class="plain">(- {</span><span class="identifier">V</span><span class="plain">}(</span><span class="identifier">CV_POS</span><span class="plain">, </span><span class="identifier">PNToVP</span><span class="plain">(), </span><span class="identifier">story_tense</span><span class="plain">); -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">say</span><span class="plain"> </span><span class="identifier">adapt</span><span class="plain"> (</span><span class="identifier">V</span><span class="plain"> - </span><span class="identifier">verb</span><span class="plain">) </span><span class="identifier">in</span><span class="plain"> (</span><span class="identifier">T</span><span class="plain"> - </span><span class="identifier">grammatical</span><span class="plain"> </span><span class="identifier">tense</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">phs_adaptt</span><span class="plain">):</span>
|
|
<span class="plain">(- {</span><span class="identifier">V</span><span class="plain">}(</span><span class="identifier">CV_POS</span><span class="plain">, </span><span class="identifier">PNToVP</span><span class="plain">(), {</span><span class="identifier">T</span><span class="plain">}); -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">say</span><span class="plain"> </span><span class="identifier">adapt</span><span class="plain"> (</span><span class="identifier">V</span><span class="plain"> - </span><span class="identifier">verb</span><span class="plain">) </span><span class="identifier">from</span><span class="plain"> (</span><span class="identifier">P</span><span class="plain"> - </span><span class="identifier">narrative</span><span class="plain"> </span><span class="identifier">viewpoint</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">phs_adaptv</span><span class="plain">):</span>
|
|
<span class="plain">(- {</span><span class="identifier">V</span><span class="plain">}(</span><span class="identifier">CV_POS</span><span class="plain">, {</span><span class="identifier">P</span><span class="plain">}, </span><span class="identifier">story_tense</span><span class="plain">); -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">say</span><span class="plain"> </span><span class="identifier">adapt</span><span class="plain"> (</span><span class="identifier">V</span><span class="plain"> - </span><span class="identifier">verb</span><span class="plain">) </span><span class="identifier">in</span><span class="plain"> (</span><span class="identifier">T</span><span class="plain"> - </span><span class="identifier">grammatical</span><span class="plain"> </span><span class="identifier">tense</span><span class="plain">) </span><span class="identifier">from</span><span class="plain"> (</span><span class="identifier">P</span><span class="plain"> - </span><span class="identifier">narrative</span><span class="plain"> </span><span class="identifier">viewpoint</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">phs_adaptvt</span><span class="plain">):</span>
|
|
<span class="plain">(- {</span><span class="identifier">V</span><span class="plain">}(</span><span class="identifier">CV_POS</span><span class="plain">, {</span><span class="identifier">P</span><span class="plain">}, {</span><span class="identifier">T</span><span class="plain">}); -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">say</span><span class="plain"> </span><span class="identifier">negate</span><span class="plain"> (</span><span class="identifier">V</span><span class="plain"> - </span><span class="identifier">verb</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">phs_negate</span><span class="plain">):</span>
|
|
<span class="plain">(- {</span><span class="identifier">V</span><span class="plain">}(</span><span class="identifier">CV_NEG</span><span class="plain">, </span><span class="identifier">PNToVP</span><span class="plain">(), </span><span class="identifier">story_tense</span><span class="plain">); -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">say</span><span class="plain"> </span><span class="identifier">negate</span><span class="plain"> (</span><span class="identifier">V</span><span class="plain"> - </span><span class="identifier">verb</span><span class="plain">) </span><span class="identifier">in</span><span class="plain"> (</span><span class="identifier">T</span><span class="plain"> - </span><span class="identifier">grammatical</span><span class="plain"> </span><span class="identifier">tense</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">phs_negatet</span><span class="plain">):</span>
|
|
<span class="plain">(- {</span><span class="identifier">V</span><span class="plain">}(</span><span class="identifier">CV_NEG</span><span class="plain">, </span><span class="identifier">PNToVP</span><span class="plain">(), {</span><span class="identifier">T</span><span class="plain">}); -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">say</span><span class="plain"> </span><span class="identifier">negate</span><span class="plain"> (</span><span class="identifier">V</span><span class="plain"> - </span><span class="identifier">verb</span><span class="plain">) </span><span class="identifier">from</span><span class="plain"> (</span><span class="identifier">P</span><span class="plain"> - </span><span class="identifier">narrative</span><span class="plain"> </span><span class="identifier">viewpoint</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">phs_negatev</span><span class="plain">):</span>
|
|
<span class="plain">(- {</span><span class="identifier">V</span><span class="plain">}(</span><span class="identifier">CV_NEG</span><span class="plain">, {</span><span class="identifier">P</span><span class="plain">}, </span><span class="identifier">story_tense</span><span class="plain">); -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">say</span><span class="plain"> </span><span class="identifier">negate</span><span class="plain"> (</span><span class="identifier">V</span><span class="plain"> - </span><span class="identifier">verb</span><span class="plain">) </span><span class="identifier">in</span><span class="plain"> (</span><span class="identifier">T</span><span class="plain"> - </span><span class="identifier">grammatical</span><span class="plain"> </span><span class="identifier">tense</span><span class="plain">) </span><span class="identifier">from</span><span class="plain"> (</span><span class="identifier">P</span><span class="plain"> - </span><span class="identifier">narrative</span><span class="plain"> </span><span class="identifier">viewpoint</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">phs_negatevt</span><span class="plain">):</span>
|
|
<span class="plain">(- {</span><span class="identifier">V</span><span class="plain">}(</span><span class="identifier">CV_NEG</span><span class="plain">, {</span><span class="identifier">P</span><span class="plain">}, {</span><span class="identifier">T</span><span class="plain">}); -).</span>
|
|
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">which</span><span class="plain"> </span><span class="identifier">relation</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">objects</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">meaning</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> (</span><span class="identifier">V</span><span class="plain"> - </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">verb</span><span class="plain">): (- {</span><span class="identifier">V</span><span class="plain">}(</span><span class="identifier">CV_MEANING</span><span class="plain">) -).</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP38"></a><b>§38. Data Structures. </b>Inform provides three main data structures: tables, lists, and relations,
|
|
which we will take in that order.
|
|
</p>
|
|
|
|
<p class="inwebparagraph">Tables mimic tables of data as seen in books or scientific papers. Note that
|
|
changing a table entry is not something defined here as a phrase: the
|
|
ever-powerful "now" can do that. But changing something to a non-value —
|
|
or "blanking" it — requires specialist phrases.
|
|
</p>
|
|
|
|
<p class="inwebparagraph">See test case <code class="display"><span class="extract">BIP-Tables</span></code>.
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">Chapter</span><span class="plain"> </span><span class="constant">6</span><span class="plain"> - </span><span class="identifier">Data</span><span class="plain"> </span><span class="identifier">Structures</span>
|
|
|
|
<span class="identifier">Section</span><span class="plain"> </span><span class="constant">1</span><span class="plain"> - </span><span class="identifier">Tables</span>
|
|
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">choose</span><span class="plain"> </span><span class="identifier">a</span><span class="plain">/</span><span class="identifier">the</span><span class="plain">/-- </span><span class="identifier">row</span><span class="plain"> (</span><span class="identifier">N</span><span class="plain"> - </span><span class="identifier">number</span><span class="plain">) </span><span class="identifier">in</span><span class="plain">/</span><span class="identifier">from</span><span class="plain"> (</span><span class="identifier">T</span><span class="plain"> - </span><span class="identifier">table</span><span class="plain"> </span><span class="identifier">name</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_chooserow</span><span class="plain">):</span>
|
|
<span class="plain">(- {-</span><span class="identifier">my</span><span class="plain">:</span><span class="identifier">ct_0</span><span class="plain">} = {</span><span class="identifier">T</span><span class="plain">}; {-</span><span class="identifier">my</span><span class="plain">:</span><span class="identifier">ct_1</span><span class="plain">} = {</span><span class="identifier">N</span><span class="plain">}; -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">choose</span><span class="plain"> </span><span class="identifier">a</span><span class="plain">/</span><span class="identifier">the</span><span class="plain">/-- </span><span class="identifier">row</span><span class="plain"> </span><span class="identifier">with</span><span class="plain"> (</span><span class="identifier">TC</span><span class="plain"> - </span><span class="identifier">K</span><span class="plain"> </span><span class="identifier">valued</span><span class="plain"> </span><span class="identifier">table</span><span class="plain"> </span><span class="identifier">column</span><span class="plain">) </span><span class="identifier">of</span><span class="plain"> (</span><span class="identifier">w</span><span class="plain"> - </span><span class="identifier">value</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">kind</span><span class="plain"> </span><span class="identifier">K</span><span class="plain">)</span>
|
|
<span class="identifier">in</span><span class="plain">/</span><span class="identifier">from</span><span class="plain"> (</span><span class="identifier">T</span><span class="plain"> - </span><span class="identifier">table</span><span class="plain"> </span><span class="identifier">name</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_chooserowwith</span><span class="plain">):</span>
|
|
<span class="plain">(- {-</span><span class="identifier">my</span><span class="plain">:</span><span class="identifier">ct_0</span><span class="plain">} = {</span><span class="identifier">T</span><span class="plain">}; {-</span><span class="identifier">my</span><span class="plain">:</span><span class="identifier">ct_1</span><span class="plain">} = </span><span class="identifier">TableRowCorr</span><span class="plain">(</span><span class="identifier">ct_0</span><span class="plain">, {</span><span class="identifier">TC</span><span class="plain">}, {</span><span class="identifier">w</span><span class="plain">}); -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">choose</span><span class="plain"> </span><span class="identifier">a</span><span class="plain">/</span><span class="identifier">the</span><span class="plain">/-- </span><span class="identifier">blank</span><span class="plain"> </span><span class="identifier">row</span><span class="plain"> </span><span class="identifier">in</span><span class="plain">/</span><span class="identifier">from</span><span class="plain"> (</span><span class="identifier">T</span><span class="plain"> - </span><span class="identifier">table</span><span class="plain"> </span><span class="identifier">name</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_chooseblankrow</span><span class="plain">):</span>
|
|
<span class="plain">(- {-</span><span class="identifier">my</span><span class="plain">:</span><span class="identifier">ct_0</span><span class="plain">} = {</span><span class="identifier">T</span><span class="plain">}; {-</span><span class="identifier">my</span><span class="plain">:</span><span class="identifier">ct_1</span><span class="plain">} = </span><span class="identifier">TableBlankRow</span><span class="plain">(</span><span class="identifier">ct_0</span><span class="plain">); -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">choose</span><span class="plain"> </span><span class="identifier">a</span><span class="plain">/</span><span class="identifier">the</span><span class="plain">/-- </span><span class="identifier">random</span><span class="plain"> </span><span class="identifier">row</span><span class="plain"> </span><span class="identifier">in</span><span class="plain">/</span><span class="identifier">from</span><span class="plain"> (</span><span class="identifier">T</span><span class="plain"> - </span><span class="identifier">table</span><span class="plain"> </span><span class="identifier">name</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_chooserandomrow</span><span class="plain">):</span>
|
|
<span class="plain">(- {-</span><span class="identifier">my</span><span class="plain">:</span><span class="identifier">ct_0</span><span class="plain">} = {</span><span class="identifier">T</span><span class="plain">}; {-</span><span class="identifier">my</span><span class="plain">:</span><span class="identifier">ct_1</span><span class="plain">} = </span><span class="identifier">TableRandomRow</span><span class="plain">(</span><span class="identifier">ct_0</span><span class="plain">); -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">which</span><span class="plain"> </span><span class="identifier">number</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">number</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">rows</span><span class="plain"> </span><span class="identifier">in</span><span class="plain">/</span><span class="identifier">from</span><span class="plain"> (</span><span class="identifier">T</span><span class="plain"> - </span><span class="identifier">table</span><span class="plain"> </span><span class="identifier">name</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_numrows</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">TableRows</span><span class="plain">({</span><span class="identifier">T</span><span class="plain">}) -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">which</span><span class="plain"> </span><span class="identifier">number</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">number</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">blank</span><span class="plain"> </span><span class="identifier">rows</span><span class="plain"> </span><span class="identifier">in</span><span class="plain">/</span><span class="identifier">from</span><span class="plain"> (</span><span class="identifier">T</span><span class="plain"> - </span><span class="identifier">table</span><span class="plain"> </span><span class="identifier">name</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_numblank</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">TableBlankRows</span><span class="plain">({</span><span class="identifier">T</span><span class="plain">}) -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">which</span><span class="plain"> </span><span class="identifier">number</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">number</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">filled</span><span class="plain"> </span><span class="identifier">rows</span><span class="plain"> </span><span class="identifier">in</span><span class="plain">/</span><span class="identifier">from</span><span class="plain"> (</span><span class="identifier">T</span><span class="plain"> - </span><span class="identifier">table</span><span class="plain"> </span><span class="identifier">name</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_numfilled</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">TableFilledRows</span><span class="plain">({</span><span class="identifier">T</span><span class="plain">}) -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">if</span><span class="plain"> </span><span class="identifier">there</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> (</span><span class="identifier">TR</span><span class="plain"> - </span><span class="identifier">table</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_thereis</span><span class="plain">):</span>
|
|
<span class="plain">(- ({-</span><span class="identifier">reference</span><span class="plain">-</span><span class="identifier">exists</span><span class="plain">:</span><span class="identifier">TR</span><span class="plain">}) -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">if</span><span class="plain"> </span><span class="identifier">there</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">no</span><span class="plain"> (</span><span class="identifier">TR</span><span class="plain"> - </span><span class="identifier">table</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_thereisno</span><span class="plain">):</span>
|
|
<span class="plain">(- ({-</span><span class="identifier">reference</span><span class="plain">-</span><span class="identifier">exists</span><span class="plain">:</span><span class="identifier">TR</span><span class="plain">} == </span><span class="identifier">false</span><span class="plain">) -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">blank</span><span class="plain"> </span><span class="identifier">out</span><span class="plain"> (</span><span class="identifier">tr</span><span class="plain"> - </span><span class="identifier">table</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_blankout</span><span class="plain">):</span>
|
|
<span class="plain">(- {-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">-</span><span class="identifier">blank</span><span class="plain">-</span><span class="identifier">out</span><span class="plain">:</span><span class="identifier">tr</span><span class="plain">}; -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">blank</span><span class="plain"> </span><span class="identifier">out</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">whole</span><span class="plain"> </span><span class="identifier">row</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_blankoutrow</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">TableBlankOutRow</span><span class="plain">({-</span><span class="identifier">my</span><span class="plain">:</span><span class="identifier">ct_0</span><span class="plain">}, {-</span><span class="identifier">my</span><span class="plain">:</span><span class="identifier">ct_1</span><span class="plain">}); -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">blank</span><span class="plain"> </span><span class="identifier">out</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">whole</span><span class="plain"> (</span><span class="identifier">TC</span><span class="plain"> - </span><span class="identifier">table</span><span class="plain"> </span><span class="identifier">column</span><span class="plain">) </span><span class="identifier">in</span><span class="plain">/</span><span class="identifier">from</span><span class="plain">/</span><span class="identifier">of</span><span class="plain"> (</span><span class="identifier">T</span><span class="plain"> - </span><span class="identifier">table</span><span class="plain"> </span><span class="identifier">name</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_blankoutcol</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">TableBlankOutColumn</span><span class="plain">({</span><span class="identifier">T</span><span class="plain">}, {</span><span class="identifier">TC</span><span class="plain">}); -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">blank</span><span class="plain"> </span><span class="identifier">out</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">whole</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> (</span><span class="identifier">T</span><span class="plain"> - </span><span class="identifier">table</span><span class="plain"> </span><span class="identifier">name</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_blankouttable</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">TableBlankOutAll</span><span class="plain">({</span><span class="identifier">T</span><span class="plain">}); -).</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP39"></a><b>§39. </b>These four are for debugging purposes only, and are used in the same test
|
|
case. "Showme the contents of ..." is not a text substitution, for efficiency
|
|
reasons: for a large table it could produce a gargantuan output, and in a
|
|
story file with memory constraints, one might not want to store that in a
|
|
text variable.
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">showme</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">contents</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> (</span><span class="identifier">T</span><span class="plain"> - </span><span class="identifier">table</span><span class="plain"> </span><span class="identifier">name</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_showmetable</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">TableDebug</span><span class="plain">({</span><span class="identifier">T</span><span class="plain">}); -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">say</span><span class="plain"> </span><span class="identifier">the</span><span class="plain">/-- </span><span class="identifier">current</span><span class="plain"> </span><span class="identifier">table</span><span class="plain"> </span><span class="identifier">row</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">phs_currenttablerow</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">TableRowDebug</span><span class="plain">({-</span><span class="identifier">my</span><span class="plain">:</span><span class="identifier">ct_0</span><span class="plain">}, {-</span><span class="identifier">my</span><span class="plain">:</span><span class="identifier">ct_1</span><span class="plain">}); -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">say</span><span class="plain"> </span><span class="identifier">row</span><span class="plain"> (</span><span class="identifier">N</span><span class="plain"> - </span><span class="identifier">number</span><span class="plain">) </span><span class="identifier">in</span><span class="plain">/</span><span class="identifier">from</span><span class="plain"> (</span><span class="identifier">T</span><span class="plain"> - </span><span class="identifier">table</span><span class="plain"> </span><span class="identifier">name</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">phs_tablerow</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">TableRowDebug</span><span class="plain">({</span><span class="identifier">T</span><span class="plain">}, {</span><span class="identifier">N</span><span class="plain">}); -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">say</span><span class="plain"> (</span><span class="identifier">TC</span><span class="plain"> - </span><span class="identifier">table</span><span class="plain"> </span><span class="identifier">column</span><span class="plain">) </span><span class="identifier">in</span><span class="plain">/</span><span class="identifier">from</span><span class="plain"> (</span><span class="identifier">T</span><span class="plain"> - </span><span class="identifier">table</span><span class="plain"> </span><span class="identifier">name</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">phs_tablecolumn</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">TableColumnDebug</span><span class="plain">({</span><span class="identifier">T</span><span class="plain">}, {</span><span class="identifier">TC</span><span class="plain">}); -).</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP40"></a><b>§40. </b>Sorting.
|
|
</p>
|
|
|
|
<p class="inwebparagraph">See test case <code class="display"><span class="extract">BIP-TableSort</span></code>.
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">Section</span><span class="plain"> </span><span class="constant">2</span><span class="plain"> - </span><span class="identifier">Sorting</span><span class="plain"> </span><span class="identifier">Tables</span>
|
|
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">sort</span><span class="plain"> (</span><span class="identifier">T</span><span class="plain"> - </span><span class="identifier">table</span><span class="plain"> </span><span class="identifier">name</span><span class="plain">) </span><span class="identifier">in</span><span class="plain">/</span><span class="identifier">into</span><span class="plain"> </span><span class="identifier">random</span><span class="plain"> </span><span class="identifier">order</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_sortrandom</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">TableShuffle</span><span class="plain">({</span><span class="identifier">T</span><span class="plain">}); -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">sort</span><span class="plain"> (</span><span class="identifier">T</span><span class="plain"> - </span><span class="identifier">table</span><span class="plain"> </span><span class="identifier">name</span><span class="plain">) </span><span class="identifier">in</span><span class="plain">/</span><span class="identifier">into</span><span class="plain"> (</span><span class="identifier">TC</span><span class="plain"> - </span><span class="identifier">table</span><span class="plain"> </span><span class="identifier">column</span><span class="plain">) </span><span class="identifier">order</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_sortcolumn</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">TableSort</span><span class="plain">({</span><span class="identifier">T</span><span class="plain">}, {</span><span class="identifier">TC</span><span class="plain">}, </span><span class="constant">1</span><span class="plain">); -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">sort</span><span class="plain"> (</span><span class="identifier">T</span><span class="plain"> - </span><span class="identifier">table</span><span class="plain"> </span><span class="identifier">name</span><span class="plain">) </span><span class="identifier">in</span><span class="plain">/</span><span class="identifier">into</span><span class="plain"> </span><span class="identifier">reverse</span><span class="plain"> (</span><span class="identifier">TC</span><span class="plain"> - </span><span class="identifier">table</span><span class="plain"> </span><span class="identifier">column</span><span class="plain">) </span><span class="identifier">order</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_sortcolumnreverse</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">TableSort</span><span class="plain">({</span><span class="identifier">T</span><span class="plain">}, {</span><span class="identifier">TC</span><span class="plain">}, -1); -).</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP41"></a><b>§41. Lists. </b>The following are all for adding and removing values to dynamic lists.
|
|
</p>
|
|
|
|
<p class="inwebparagraph">See test case <code class="display"><span class="extract">BIP-Lists</span></code>.
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">Section</span><span class="plain"> </span><span class="constant">3</span><span class="plain"> - </span><span class="identifier">Lists</span>
|
|
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">add</span><span class="plain"> (</span><span class="identifier">new</span><span class="plain"> </span><span class="identifier">entry</span><span class="plain"> - </span><span class="identifier">K</span><span class="plain">) </span><span class="identifier">to</span><span class="plain"> (</span><span class="identifier">L</span><span class="plain"> - </span><span class="identifier">list</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">values</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">kind</span><span class="plain"> </span><span class="identifier">K</span><span class="plain">), </span><span class="identifier">if</span><span class="plain"> </span><span class="identifier">absent</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_addtolist</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">LIST_OF_TY_InsertItem</span><span class="plain">({-</span><span class="identifier">lvalue</span><span class="plain">-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">L</span><span class="plain">}, {</span><span class="identifier">new</span><span class="plain"> </span><span class="identifier">entry</span><span class="plain">}, </span><span class="constant">0</span><span class="plain">, </span><span class="constant">0</span><span class="plain">, {</span><span class="identifier">phrase</span><span class="plain"> </span><span class="identifier">options</span><span class="plain">}); -).</span>
|
|
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">add</span><span class="plain"> (</span><span class="identifier">new</span><span class="plain"> </span><span class="identifier">entry</span><span class="plain"> - </span><span class="identifier">K</span><span class="plain">) </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">entry</span><span class="plain"> (</span><span class="identifier">E</span><span class="plain"> - </span><span class="identifier">number</span><span class="plain">) </span><span class="identifier">in</span><span class="plain"> (</span><span class="identifier">L</span><span class="plain"> - </span><span class="identifier">list</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">values</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">kind</span><span class="plain"> </span><span class="identifier">K</span><span class="plain">), </span><span class="identifier">if</span><span class="plain"> </span><span class="identifier">absent</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_addatentry</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">LIST_OF_TY_InsertItem</span><span class="plain">({-</span><span class="identifier">lvalue</span><span class="plain">-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">L</span><span class="plain">}, {</span><span class="identifier">new</span><span class="plain"> </span><span class="identifier">entry</span><span class="plain">}, </span><span class="constant">1</span><span class="plain">, {</span><span class="identifier">E</span><span class="plain">}, {</span><span class="identifier">phrase</span><span class="plain"> </span><span class="identifier">options</span><span class="plain">}); -).</span>
|
|
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">add</span><span class="plain"> (</span><span class="identifier">LX</span><span class="plain"> - </span><span class="identifier">list</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">Ks</span><span class="plain">) </span><span class="identifier">to</span><span class="plain"> (</span><span class="identifier">L</span><span class="plain"> - </span><span class="identifier">list</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">values</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">kind</span><span class="plain"> </span><span class="identifier">K</span><span class="plain">), </span><span class="identifier">if</span><span class="plain"> </span><span class="identifier">absent</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_addlisttolist</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">LIST_OF_TY_AppendList</span><span class="plain">({-</span><span class="identifier">lvalue</span><span class="plain">-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">L</span><span class="plain">}, {-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">LX</span><span class="plain">}, </span><span class="constant">0</span><span class="plain">, </span><span class="constant">0</span><span class="plain">, {</span><span class="identifier">phrase</span><span class="plain"> </span><span class="identifier">options</span><span class="plain">}); -).</span>
|
|
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">add</span><span class="plain"> (</span><span class="identifier">LX</span><span class="plain"> - </span><span class="identifier">list</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">Ks</span><span class="plain">) </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">entry</span><span class="plain"> (</span><span class="identifier">E</span><span class="plain"> - </span><span class="identifier">number</span><span class="plain">) </span><span class="identifier">in</span><span class="plain"> (</span><span class="identifier">L</span><span class="plain"> - </span><span class="identifier">list</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">values</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">kind</span><span class="plain"> </span><span class="identifier">K</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_addlistatentry</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">LIST_OF_TY_AppendList</span><span class="plain">({-</span><span class="identifier">lvalue</span><span class="plain">-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">L</span><span class="plain">}, {-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">LX</span><span class="plain">}, </span><span class="constant">1</span><span class="plain">, {</span><span class="identifier">E</span><span class="plain">}, </span><span class="constant">0</span><span class="plain">); -).</span>
|
|
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">remove</span><span class="plain"> (</span><span class="identifier">existing</span><span class="plain"> </span><span class="identifier">entry</span><span class="plain"> - </span><span class="identifier">K</span><span class="plain">) </span><span class="identifier">from</span><span class="plain"> (</span><span class="identifier">L</span><span class="plain"> - </span><span class="identifier">list</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">values</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">kind</span><span class="plain"> </span><span class="identifier">K</span><span class="plain">), </span><span class="identifier">if</span><span class="plain"> </span><span class="identifier">present</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_remfromlist</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">LIST_OF_TY_RemoveValue</span><span class="plain">({-</span><span class="identifier">lvalue</span><span class="plain">-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">L</span><span class="plain">}, {</span><span class="identifier">existing</span><span class="plain"> </span><span class="identifier">entry</span><span class="plain">}, {</span><span class="identifier">phrase</span><span class="plain"> </span><span class="identifier">options</span><span class="plain">}); -).</span>
|
|
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">remove</span><span class="plain"> (</span><span class="identifier">N</span><span class="plain"> - </span><span class="identifier">list</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">Ks</span><span class="plain">) </span><span class="identifier">from</span><span class="plain"> (</span><span class="identifier">L</span><span class="plain"> - </span><span class="identifier">list</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">values</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">kind</span><span class="plain"> </span><span class="identifier">K</span><span class="plain">), </span><span class="identifier">if</span><span class="plain"> </span><span class="identifier">present</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_remlistfromlist</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">LIST_OF_TY_Remove_List</span><span class="plain">({-</span><span class="identifier">lvalue</span><span class="plain">-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">L</span><span class="plain">}, {-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">N</span><span class="plain">}, {</span><span class="identifier">phrase</span><span class="plain"> </span><span class="identifier">options</span><span class="plain">}); -).</span>
|
|
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">remove</span><span class="plain"> </span><span class="identifier">entry</span><span class="plain"> (</span><span class="identifier">N</span><span class="plain"> - </span><span class="identifier">number</span><span class="plain">) </span><span class="identifier">from</span><span class="plain"> (</span><span class="identifier">L</span><span class="plain"> - </span><span class="identifier">list</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">values</span><span class="plain">), </span><span class="identifier">if</span><span class="plain"> </span><span class="identifier">present</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_rementry</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">LIST_OF_TY_RemoveItemRange</span><span class="plain">({-</span><span class="identifier">lvalue</span><span class="plain">-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">L</span><span class="plain">}, {</span><span class="identifier">N</span><span class="plain">}, {</span><span class="identifier">N</span><span class="plain">}, {</span><span class="identifier">phrase</span><span class="plain"> </span><span class="identifier">options</span><span class="plain">}); -).</span>
|
|
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">remove</span><span class="plain"> </span><span class="identifier">entries</span><span class="plain"> (</span><span class="identifier">N</span><span class="plain"> - </span><span class="identifier">number</span><span class="plain">) </span><span class="identifier">to</span><span class="plain"> (</span><span class="identifier">N2</span><span class="plain"> - </span><span class="identifier">number</span><span class="plain">) </span><span class="identifier">from</span><span class="plain"> (</span><span class="identifier">L</span><span class="plain"> - </span><span class="identifier">list</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">values</span><span class="plain">), </span><span class="identifier">if</span><span class="plain"> </span><span class="identifier">present</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_rementries</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">LIST_OF_TY_RemoveItemRange</span><span class="plain">({-</span><span class="identifier">lvalue</span><span class="plain">-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">L</span><span class="plain">}, {</span><span class="identifier">N</span><span class="plain">}, {</span><span class="identifier">N2</span><span class="plain">}, {</span><span class="identifier">phrase</span><span class="plain"> </span><span class="identifier">options</span><span class="plain">}); -).</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP42"></a><b>§42. </b>Searching a list is implemented in a somewhat crude way at present, and the
|
|
following syntax may later be replaced with a suitable verb "to be listed
|
|
in", so that there's no need to imitate.
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">if</span><span class="plain"> (</span><span class="identifier">N</span><span class="plain"> - </span><span class="identifier">K</span><span class="plain">) </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">listed</span><span class="plain"> </span><span class="identifier">in</span><span class="plain"> (</span><span class="identifier">L</span><span class="plain"> - </span><span class="identifier">list</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">values</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">kind</span><span class="plain"> </span><span class="identifier">K</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_islistedin</span><span class="plain">):</span>
|
|
<span class="plain">(- (</span><span class="identifier">LIST_OF_TY_FindItem</span><span class="plain">({-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">L</span><span class="plain">}, {</span><span class="identifier">N</span><span class="plain">})) -).</span>
|
|
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">if</span><span class="plain"> (</span><span class="identifier">N</span><span class="plain"> - </span><span class="identifier">K</span><span class="plain">) </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">not</span><span class="plain"> </span><span class="identifier">listed</span><span class="plain"> </span><span class="identifier">in</span><span class="plain"> (</span><span class="identifier">L</span><span class="plain"> - </span><span class="identifier">list</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">values</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">kind</span><span class="plain"> </span><span class="identifier">K</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_isnotlistedin</span><span class="plain">):</span>
|
|
<span class="plain">(- (</span><span class="identifier">LIST_OF_TY_FindItem</span><span class="plain">({-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">L</span><span class="plain">}, {</span><span class="identifier">N</span><span class="plain">}) == </span><span class="identifier">false</span><span class="plain">) -).</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP43"></a><b>§43. </b>A description is a representation of a set of objects by means of a
|
|
predicate (e.g., "open unlocked doors"), and it converts into a list of
|
|
current members (in creation order), but there's no reverse process.
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">what</span><span class="plain"> </span><span class="identifier">list</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">Ks</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">list</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> (</span><span class="identifier">D</span><span class="plain"> - </span><span class="identifier">description</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">values</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">kind</span><span class="plain"> </span><span class="identifier">K</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_listofdesc</span><span class="plain">):</span>
|
|
<span class="plain">(- {-</span><span class="identifier">new</span><span class="plain">-</span><span class="identifier">list</span><span class="plain">-</span><span class="identifier">of</span><span class="plain">:</span><span class="identifier">list</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">K</span><span class="plain">} -).</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP44"></a><b>§44. </b>Determining and setting the length:
|
|
</p>
|
|
|
|
<p class="inwebparagraph">See test case <code class="display"><span class="extract">BIP-ListLength</span></code>.
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">Section</span><span class="plain"> </span><span class="constant">4</span><span class="plain"> - </span><span class="identifier">Length</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">lists</span>
|
|
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">what</span><span class="plain"> </span><span class="identifier">number</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">number</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">entries</span><span class="plain"> </span><span class="identifier">in</span><span class="plain">/</span><span class="identifier">of</span><span class="plain"> (</span><span class="identifier">L</span><span class="plain"> - </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">list</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">values</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_numberentries</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">LIST_OF_TY_GetLength</span><span class="plain">({-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">L</span><span class="plain">}) -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">truncate</span><span class="plain"> (</span><span class="identifier">L</span><span class="plain"> - </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">list</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">values</span><span class="plain">) </span><span class="identifier">to</span><span class="plain"> (</span><span class="identifier">N</span><span class="plain"> - </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">number</span><span class="plain">) </span><span class="identifier">entries</span><span class="plain">/</span><span class="identifier">entry</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_truncate</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">LIST_OF_TY_SetLength</span><span class="plain">({-</span><span class="identifier">lvalue</span><span class="plain">-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">L</span><span class="plain">}, {</span><span class="identifier">N</span><span class="plain">}, -1, </span><span class="constant">1</span><span class="plain">); -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">truncate</span><span class="plain"> (</span><span class="identifier">L</span><span class="plain"> - </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">list</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">values</span><span class="plain">) </span><span class="identifier">to</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">first</span><span class="plain"> (</span><span class="identifier">N</span><span class="plain"> - </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">number</span><span class="plain">) </span><span class="identifier">entries</span><span class="plain">/</span><span class="identifier">entry</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_truncatefirst</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">LIST_OF_TY_SetLength</span><span class="plain">({-</span><span class="identifier">lvalue</span><span class="plain">-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">L</span><span class="plain">}, {</span><span class="identifier">N</span><span class="plain">}, -1, </span><span class="constant">1</span><span class="plain">); -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">truncate</span><span class="plain"> (</span><span class="identifier">L</span><span class="plain"> - </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">list</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">values</span><span class="plain">) </span><span class="identifier">to</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">last</span><span class="plain"> (</span><span class="identifier">N</span><span class="plain"> - </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">number</span><span class="plain">) </span><span class="identifier">entries</span><span class="plain">/</span><span class="identifier">entry</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_truncatelast</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">LIST_OF_TY_SetLength</span><span class="plain">({-</span><span class="identifier">lvalue</span><span class="plain">-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">L</span><span class="plain">}, {</span><span class="identifier">N</span><span class="plain">}, -1, -1); -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">extend</span><span class="plain"> (</span><span class="identifier">L</span><span class="plain"> - </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">list</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">values</span><span class="plain">) </span><span class="identifier">to</span><span class="plain"> (</span><span class="identifier">N</span><span class="plain"> - </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">number</span><span class="plain">) </span><span class="identifier">entries</span><span class="plain">/</span><span class="identifier">entry</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_extend</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">LIST_OF_TY_SetLength</span><span class="plain">({-</span><span class="identifier">lvalue</span><span class="plain">-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">L</span><span class="plain">}, {</span><span class="identifier">N</span><span class="plain">}, </span><span class="constant">1</span><span class="plain">); -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">change</span><span class="plain"> (</span><span class="identifier">L</span><span class="plain"> - </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">list</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">values</span><span class="plain">) </span><span class="identifier">to</span><span class="plain"> </span><span class="identifier">have</span><span class="plain"> (</span><span class="identifier">N</span><span class="plain"> - </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">number</span><span class="plain">) </span><span class="identifier">entries</span><span class="plain">/</span><span class="identifier">entry</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_changelength</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">LIST_OF_TY_SetLength</span><span class="plain">({-</span><span class="identifier">lvalue</span><span class="plain">-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">L</span><span class="plain">}, {</span><span class="identifier">N</span><span class="plain">}, </span><span class="constant">0</span><span class="plain">); -).</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP45"></a><b>§45. </b>Easy but useful list operations. Sorting ultimately uses a common sorting
|
|
mechanism, in "Sort.i6t", which handles both lists and tables.
|
|
</p>
|
|
|
|
<p class="inwebparagraph">See test case <code class="display"><span class="extract">BIP-ListOperations</span></code>.
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">Section</span><span class="plain"> </span><span class="constant">5</span><span class="plain"> - </span><span class="identifier">List</span><span class="plain"> </span><span class="identifier">operations</span>
|
|
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">reverse</span><span class="plain"> (</span><span class="identifier">L</span><span class="plain"> - </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">list</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">values</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_reverselist</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">LIST_OF_TY_Reverse</span><span class="plain">({-</span><span class="identifier">lvalue</span><span class="plain">-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">L</span><span class="plain">}); -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">rotate</span><span class="plain"> (</span><span class="identifier">L</span><span class="plain"> - </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">list</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">values</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_rotatelist</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">LIST_OF_TY_Rotate</span><span class="plain">({-</span><span class="identifier">lvalue</span><span class="plain">-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">L</span><span class="plain">}, </span><span class="constant">0</span><span class="plain">); -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">rotate</span><span class="plain"> (</span><span class="identifier">L</span><span class="plain"> - </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">list</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">values</span><span class="plain">) </span><span class="identifier">backwards</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_rotatelistback</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">LIST_OF_TY_Rotate</span><span class="plain">({-</span><span class="identifier">lvalue</span><span class="plain">-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">L</span><span class="plain">}, </span><span class="constant">1</span><span class="plain">); -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">sort</span><span class="plain"> (</span><span class="identifier">L</span><span class="plain"> - </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">list</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">values</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_sortlist</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">LIST_OF_TY_Sort</span><span class="plain">({-</span><span class="identifier">lvalue</span><span class="plain">-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">L</span><span class="plain">}, </span><span class="constant">1</span><span class="plain">); -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">sort</span><span class="plain"> (</span><span class="identifier">L</span><span class="plain"> - </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">list</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">values</span><span class="plain">) </span><span class="identifier">in</span><span class="plain">/</span><span class="identifier">into</span><span class="plain"> </span><span class="identifier">reverse</span><span class="plain"> </span><span class="identifier">order</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_sortlistreverse</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">LIST_OF_TY_Sort</span><span class="plain">({-</span><span class="identifier">lvalue</span><span class="plain">-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">L</span><span class="plain">}, -1); -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">sort</span><span class="plain"> (</span><span class="identifier">L</span><span class="plain"> - </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">list</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">values</span><span class="plain">) </span><span class="identifier">in</span><span class="plain">/</span><span class="identifier">into</span><span class="plain"> </span><span class="identifier">random</span><span class="plain"> </span><span class="identifier">order</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_sortlistrandom</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">LIST_OF_TY_Sort</span><span class="plain">({-</span><span class="identifier">lvalue</span><span class="plain">-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">L</span><span class="plain">}, </span><span class="constant">2</span><span class="plain">); -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">sort</span><span class="plain"> (</span><span class="identifier">L</span><span class="plain"> - </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">list</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">objects</span><span class="plain">) </span><span class="identifier">in</span><span class="plain">/</span><span class="identifier">into</span><span class="plain"> (</span><span class="identifier">P</span><span class="plain"> - </span><span class="identifier">property</span><span class="plain">) </span><span class="identifier">order</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_sortlistproperty</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">LIST_OF_TY_Sort</span><span class="plain">({-</span><span class="identifier">lvalue</span><span class="plain">-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">L</span><span class="plain">}, </span><span class="constant">1</span><span class="plain">, {</span><span class="identifier">P</span><span class="plain">}, {-</span><span class="identifier">property</span><span class="plain">-</span><span class="identifier">holds</span><span class="plain">-</span><span class="identifier">block</span><span class="plain">-</span><span class="identifier">value</span><span class="plain">:</span><span class="identifier">P</span><span class="plain">}); -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">sort</span><span class="plain"> (</span><span class="identifier">L</span><span class="plain"> - </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">list</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">objects</span><span class="plain">) </span><span class="identifier">in</span><span class="plain">/</span><span class="identifier">into</span><span class="plain"> </span><span class="identifier">reverse</span><span class="plain"> (</span><span class="identifier">P</span><span class="plain"> - </span><span class="identifier">property</span><span class="plain">) </span><span class="identifier">order</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_sortlistpropertyreverse</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">LIST_OF_TY_Sort</span><span class="plain">({-</span><span class="identifier">lvalue</span><span class="plain">-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">L</span><span class="plain">}, -1, {</span><span class="identifier">P</span><span class="plain">}, {-</span><span class="identifier">property</span><span class="plain">-</span><span class="identifier">holds</span><span class="plain">-</span><span class="identifier">block</span><span class="plain">-</span><span class="identifier">value</span><span class="plain">:</span><span class="identifier">P</span><span class="plain">}); -).</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP46"></a><b>§46. </b>Relations are the final data structure given here. In some ways they are
|
|
the most fundamental of all, but they're not either set or tested by
|
|
procedural phrases — they lie in the linguistic structure of conditions.
|
|
So all we have here are the route-finding phrases:
|
|
</p>
|
|
|
|
<p class="inwebparagraph">See test case <code class="display"><span class="extract">BIP-Relations</span></code>.
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">Section</span><span class="plain"> </span><span class="constant">6</span><span class="plain"> - </span><span class="identifier">Relations</span>
|
|
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">show</span><span class="plain"> </span><span class="identifier">relation</span><span class="plain"> (</span><span class="identifier">R</span><span class="plain"> - </span><span class="identifier">relation</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_showrelation</span><span class="plain">):</span>
|
|
<span class="plain">(- {-</span><span class="identifier">show</span><span class="plain">-</span><span class="identifier">me</span><span class="plain">:</span><span class="identifier">R</span><span class="plain">}; </span><span class="identifier">RelationTest</span><span class="plain">({-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">R</span><span class="plain">}, </span><span class="identifier">RELS_SHOW</span><span class="plain">); -).</span>
|
|
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">which</span><span class="plain"> </span><span class="identifier">object</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">next</span><span class="plain"> </span><span class="identifier">step</span><span class="plain"> </span><span class="identifier">via</span><span class="plain"> (</span><span class="identifier">R</span><span class="plain"> - </span><span class="identifier">relation</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">objects</span><span class="plain">)</span>
|
|
<span class="identifier">from</span><span class="plain"> (</span><span class="identifier">O1</span><span class="plain"> - </span><span class="identifier">object</span><span class="plain">) </span><span class="identifier">to</span><span class="plain"> (</span><span class="identifier">O2</span><span class="plain"> - </span><span class="identifier">object</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_nextstep</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">RelationRouteTo</span><span class="plain">({-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">R</span><span class="plain">},{</span><span class="identifier">O1</span><span class="plain">},{</span><span class="identifier">O2</span><span class="plain">},</span><span class="identifier">false</span><span class="plain">) -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">which</span><span class="plain"> </span><span class="identifier">number</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">number</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">steps</span><span class="plain"> </span><span class="identifier">via</span><span class="plain"> (</span><span class="identifier">R</span><span class="plain"> - </span><span class="identifier">relation</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">objects</span><span class="plain">)</span>
|
|
<span class="identifier">from</span><span class="plain"> (</span><span class="identifier">O1</span><span class="plain"> - </span><span class="identifier">object</span><span class="plain">) </span><span class="identifier">to</span><span class="plain"> (</span><span class="identifier">O2</span><span class="plain"> - </span><span class="identifier">object</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_numbersteps</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">RelationRouteTo</span><span class="plain">({-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">R</span><span class="plain">},{</span><span class="identifier">O1</span><span class="plain">},{</span><span class="identifier">O2</span><span class="plain">},</span><span class="identifier">true</span><span class="plain">) -).</span>
|
|
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">which</span><span class="plain"> </span><span class="identifier">list</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">Ks</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">list</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> (</span><span class="identifier">name</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">kind</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">value</span><span class="plain"> </span><span class="identifier">K</span><span class="plain">)</span>
|
|
<span class="identifier">that</span><span class="plain">/</span><span class="identifier">which</span><span class="plain">/</span><span class="identifier">whom</span><span class="plain"> (</span><span class="identifier">R</span><span class="plain"> - </span><span class="identifier">relation</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">Ks</span><span class="plain"> </span><span class="identifier">to</span><span class="plain"> </span><span class="identifier">values</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">kind</span><span class="plain"> </span><span class="identifier">L</span><span class="plain">) </span><span class="identifier">relates</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_leftdomain</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">RelationTest</span><span class="plain">({-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">R</span><span class="plain">}, </span><span class="identifier">RELS_LIST</span><span class="plain">, {-</span><span class="identifier">new</span><span class="plain">:</span><span class="identifier">list</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">K</span><span class="plain">}, </span><span class="identifier">RLIST_ALL_X</span><span class="plain">) -).</span>
|
|
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">which</span><span class="plain"> </span><span class="identifier">list</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">Ls</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">list</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> (</span><span class="identifier">name</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">kind</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">value</span><span class="plain"> </span><span class="identifier">L</span><span class="plain">)</span>
|
|
<span class="identifier">to</span><span class="plain"> </span><span class="identifier">which</span><span class="plain">/</span><span class="identifier">whom</span><span class="plain"> (</span><span class="identifier">R</span><span class="plain"> - </span><span class="identifier">relation</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">values</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">kind</span><span class="plain"> </span><span class="identifier">K</span><span class="plain"> </span><span class="identifier">to</span><span class="plain"> </span><span class="identifier">Ls</span><span class="plain">) </span><span class="identifier">relates</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_rightdomain</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">RelationTest</span><span class="plain">({-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">R</span><span class="plain">}, </span><span class="identifier">RELS_LIST</span><span class="plain">, {-</span><span class="identifier">new</span><span class="plain">:</span><span class="identifier">list</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">L</span><span class="plain">}, </span><span class="identifier">RLIST_ALL_Y</span><span class="plain">) -). </span>
|
|
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">which</span><span class="plain"> </span><span class="identifier">list</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">Ls</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">list</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> (</span><span class="identifier">name</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">kind</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">value</span><span class="plain"> </span><span class="identifier">L</span><span class="plain">)</span>
|
|
<span class="identifier">that</span><span class="plain">/</span><span class="identifier">which</span><span class="plain">/</span><span class="identifier">whom</span><span class="plain"> (</span><span class="identifier">R</span><span class="plain"> - </span><span class="identifier">relation</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">values</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">kind</span><span class="plain"> </span><span class="identifier">K</span><span class="plain"> </span><span class="identifier">to</span><span class="plain"> </span><span class="identifier">Ls</span><span class="plain">) </span><span class="identifier">relates</span><span class="plain"> </span><span class="identifier">to</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_rightdomain</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">RelationTest</span><span class="plain">({-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">R</span><span class="plain">}, </span><span class="identifier">RELS_LIST</span><span class="plain">, {-</span><span class="identifier">new</span><span class="plain">:</span><span class="identifier">list</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">L</span><span class="plain">}, </span><span class="identifier">RLIST_ALL_Y</span><span class="plain">) -). </span>
|
|
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">which</span><span class="plain"> </span><span class="identifier">list</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">Ks</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">list</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> (</span><span class="identifier">name</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">kind</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">value</span><span class="plain"> </span><span class="identifier">K</span><span class="plain">) </span><span class="identifier">that</span><span class="plain">/</span><span class="identifier">which</span><span class="plain">/</span><span class="identifier">who</span>
|
|
<span class="identifier">relate</span><span class="plain"> </span><span class="identifier">to</span><span class="plain"> (</span><span class="identifier">Y</span><span class="plain"> - </span><span class="identifier">L</span><span class="plain">) </span><span class="identifier">by</span><span class="plain"> (</span><span class="identifier">R</span><span class="plain"> - </span><span class="identifier">relation</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">Ks</span><span class="plain"> </span><span class="identifier">to</span><span class="plain"> </span><span class="identifier">values</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">kind</span><span class="plain"> </span><span class="identifier">L</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_leftlookuplist</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">RelationTest</span><span class="plain">({-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">R</span><span class="plain">}, </span><span class="identifier">RELS_LOOKUP_ALL_X</span><span class="plain">, {</span><span class="identifier">Y</span><span class="plain">}, {-</span><span class="identifier">new</span><span class="plain">:</span><span class="identifier">list</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">K</span><span class="plain">}) -).</span>
|
|
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">which</span><span class="plain"> </span><span class="identifier">list</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">Ls</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">list</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> (</span><span class="identifier">name</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">kind</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">value</span><span class="plain"> </span><span class="identifier">L</span><span class="plain">) </span><span class="identifier">to</span><span class="plain"> </span><span class="identifier">which</span><span class="plain">/</span><span class="identifier">whom</span><span class="plain"> (</span><span class="identifier">X</span><span class="plain"> - </span><span class="identifier">K</span><span class="plain">)</span>
|
|
<span class="identifier">relates</span><span class="plain"> </span><span class="identifier">by</span><span class="plain"> (</span><span class="identifier">R</span><span class="plain"> - </span><span class="identifier">relation</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">values</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">kind</span><span class="plain"> </span><span class="identifier">K</span><span class="plain"> </span><span class="identifier">to</span><span class="plain"> </span><span class="identifier">Ls</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_rightlookuplist</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">RelationTest</span><span class="plain">({-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">R</span><span class="plain">}, </span><span class="identifier">RELS_LOOKUP_ALL_Y</span><span class="plain">, {</span><span class="identifier">X</span><span class="plain">}, {-</span><span class="identifier">new</span><span class="plain">:</span><span class="identifier">list</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">L</span><span class="plain">}) -). </span>
|
|
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">which</span><span class="plain"> </span><span class="identifier">list</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">Ls</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">list</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> (</span><span class="identifier">name</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">kind</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">value</span><span class="plain"> </span><span class="identifier">L</span><span class="plain">)</span>
|
|
<span class="identifier">that</span><span class="plain">/</span><span class="identifier">which</span><span class="plain">/</span><span class="identifier">whom</span><span class="plain"> (</span><span class="identifier">X</span><span class="plain"> - </span><span class="identifier">K</span><span class="plain">) </span><span class="identifier">relates</span><span class="plain"> </span><span class="identifier">to</span><span class="plain"> </span><span class="identifier">by</span><span class="plain"> (</span><span class="identifier">R</span><span class="plain"> - </span><span class="identifier">relation</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">values</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">kind</span><span class="plain"> </span><span class="identifier">K</span><span class="plain"> </span><span class="identifier">to</span><span class="plain"> </span><span class="identifier">Ls</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_rightlookuplist</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">RelationTest</span><span class="plain">({-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">R</span><span class="plain">}, </span><span class="identifier">RELS_LOOKUP_ALL_Y</span><span class="plain">, {</span><span class="identifier">X</span><span class="plain">}, {-</span><span class="identifier">new</span><span class="plain">:</span><span class="identifier">list</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">L</span><span class="plain">}) -). </span>
|
|
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">whether</span><span class="plain"> (</span><span class="identifier">name</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">kind</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">value</span><span class="plain"> </span><span class="identifier">K</span><span class="plain">) </span><span class="identifier">relates</span><span class="plain"> </span><span class="identifier">to</span><span class="plain"> (</span><span class="identifier">Y</span><span class="plain"> - </span><span class="identifier">L</span><span class="plain">) </span><span class="identifier">by</span>
|
|
<span class="plain">(</span><span class="identifier">R</span><span class="plain"> - </span><span class="identifier">relation</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">Ks</span><span class="plain"> </span><span class="identifier">to</span><span class="plain"> </span><span class="identifier">values</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">kind</span><span class="plain"> </span><span class="identifier">L</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_ifright</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">RelationTest</span><span class="plain">({-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">R</span><span class="plain">}, </span><span class="identifier">RELS_LOOKUP_ANY</span><span class="plain">, {</span><span class="identifier">Y</span><span class="plain">}, </span><span class="identifier">RLANY_CAN_GET_X</span><span class="plain">) -).</span>
|
|
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">whether</span><span class="plain"> (</span><span class="identifier">X</span><span class="plain"> - </span><span class="identifier">K</span><span class="plain">) </span><span class="identifier">relates</span><span class="plain"> </span><span class="identifier">to</span><span class="plain"> (</span><span class="identifier">name</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">kind</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">value</span><span class="plain"> </span><span class="identifier">L</span><span class="plain">) </span><span class="identifier">by</span>
|
|
<span class="plain">(</span><span class="identifier">R</span><span class="plain"> - </span><span class="identifier">relation</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">values</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">kind</span><span class="plain"> </span><span class="identifier">K</span><span class="plain"> </span><span class="identifier">to</span><span class="plain"> </span><span class="identifier">Ls</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_ifleft</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">RelationTest</span><span class="plain">({-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">R</span><span class="plain">}, </span><span class="identifier">RELS_LOOKUP_ANY</span><span class="plain">, {</span><span class="identifier">X</span><span class="plain">}, </span><span class="identifier">RLANY_CAN_GET_Y</span><span class="plain">) -).</span>
|
|
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">which</span><span class="plain"> </span><span class="identifier">K</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> (</span><span class="identifier">name</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">kind</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">value</span><span class="plain"> </span><span class="identifier">K</span><span class="plain">) </span><span class="identifier">that</span><span class="plain">/</span><span class="identifier">which</span><span class="plain">/</span><span class="identifier">who</span><span class="plain"> </span><span class="identifier">relates</span><span class="plain"> </span><span class="identifier">to</span>
|
|
<span class="plain">(</span><span class="identifier">Y</span><span class="plain"> - </span><span class="identifier">L</span><span class="plain">) </span><span class="identifier">by</span><span class="plain"> (</span><span class="identifier">R</span><span class="plain"> - </span><span class="identifier">relation</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">Ks</span><span class="plain"> </span><span class="identifier">to</span><span class="plain"> </span><span class="identifier">values</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">kind</span><span class="plain"> </span><span class="identifier">L</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_leftlookup</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">RelationTest</span><span class="plain">({-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">R</span><span class="plain">}, </span><span class="identifier">RELS_LOOKUP_ANY</span><span class="plain">, {</span><span class="identifier">Y</span><span class="plain">}, </span><span class="identifier">RLANY_GET_X</span><span class="plain">) -).</span>
|
|
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">which</span><span class="plain"> </span><span class="identifier">L</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> (</span><span class="identifier">name</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">kind</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">value</span><span class="plain"> </span><span class="identifier">L</span><span class="plain">) </span><span class="identifier">to</span><span class="plain"> </span><span class="identifier">which</span><span class="plain">/</span><span class="identifier">whom</span><span class="plain"> (</span><span class="identifier">X</span><span class="plain"> - </span><span class="identifier">K</span><span class="plain">)</span>
|
|
<span class="identifier">relates</span><span class="plain"> </span><span class="identifier">by</span><span class="plain"> (</span><span class="identifier">R</span><span class="plain"> - </span><span class="identifier">relation</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">values</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">kind</span><span class="plain"> </span><span class="identifier">K</span><span class="plain"> </span><span class="identifier">to</span><span class="plain"> </span><span class="identifier">Ls</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_rightlookup</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">RelationTest</span><span class="plain">({-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">R</span><span class="plain">}, </span><span class="identifier">RELS_LOOKUP_ANY</span><span class="plain">, {</span><span class="identifier">X</span><span class="plain">}, </span><span class="identifier">RLANY_GET_Y</span><span class="plain">) -). </span>
|
|
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">which</span><span class="plain"> </span><span class="identifier">L</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> (</span><span class="identifier">name</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">kind</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">value</span><span class="plain"> </span><span class="identifier">L</span><span class="plain">) </span><span class="identifier">that</span><span class="plain">/</span><span class="identifier">which</span><span class="plain">/</span><span class="identifier">whom</span><span class="plain"> (</span><span class="identifier">X</span><span class="plain"> - </span><span class="identifier">K</span><span class="plain">)</span>
|
|
<span class="identifier">relates</span><span class="plain"> </span><span class="identifier">to</span><span class="plain"> </span><span class="identifier">by</span><span class="plain"> (</span><span class="identifier">R</span><span class="plain"> - </span><span class="identifier">relation</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">values</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">kind</span><span class="plain"> </span><span class="identifier">K</span><span class="plain"> </span><span class="identifier">to</span><span class="plain"> </span><span class="identifier">Ls</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_rightlookup</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">RelationTest</span><span class="plain">({-</span><span class="identifier">by</span><span class="plain">-</span><span class="identifier">reference</span><span class="plain">:</span><span class="identifier">R</span><span class="plain">}, </span><span class="identifier">RELS_LOOKUP_ANY</span><span class="plain">, {</span><span class="identifier">X</span><span class="plain">}, </span><span class="identifier">RLANY_GET_Y</span><span class="plain">) -). </span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP47"></a><b>§47. Functional Programming. </b>Here we have the ability to use the name of a function as a value, and to
|
|
apply such a function.
|
|
</p>
|
|
|
|
<p class="inwebparagraph">See test case <code class="display"><span class="extract">BIP-Apply</span></code>.
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">Chapter</span><span class="plain"> </span><span class="constant">7</span><span class="plain"> - </span><span class="identifier">Functional</span><span class="plain"> </span><span class="identifier">Programming</span>
|
|
|
|
<span class="identifier">Section</span><span class="plain"> </span><span class="constant">1</span><span class="plain"> - </span><span class="identifier">Applying</span><span class="plain"> </span><span class="identifier">Functions</span>
|
|
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">whether</span><span class="plain"> (</span><span class="identifier">val</span><span class="plain"> - </span><span class="identifier">K</span><span class="plain">) </span><span class="identifier">matches</span><span class="plain"> (</span><span class="identifier">desc</span><span class="plain"> - </span><span class="identifier">description</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">values</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">kind</span><span class="plain"> </span><span class="identifier">K</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_valuematch</span><span class="plain">):</span>
|
|
<span class="plain">(- {-</span><span class="identifier">primitive</span><span class="plain">-</span><span class="identifier">definition</span><span class="plain">:</span><span class="identifier">description</span><span class="plain">-</span><span class="identifier">application</span><span class="plain">} -).</span>
|
|
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">what</span><span class="plain"> </span><span class="identifier">K</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> (</span><span class="identifier">function</span><span class="plain"> - </span><span class="identifier">phrase</span><span class="plain"> </span><span class="identifier">nothing</span><span class="plain"> -> </span><span class="identifier">value</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">kind</span><span class="plain"> </span><span class="identifier">K</span><span class="plain">) </span><span class="identifier">applied</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_applied0</span><span class="plain">):</span>
|
|
<span class="plain">(- {-</span><span class="identifier">primitive</span><span class="plain">-</span><span class="identifier">definition</span><span class="plain">:</span><span class="identifier">function</span><span class="plain">-</span><span class="identifier">application</span><span class="plain">} -).</span>
|
|
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">what</span><span class="plain"> </span><span class="identifier">L</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> (</span><span class="identifier">function</span><span class="plain"> - </span><span class="identifier">phrase</span><span class="plain"> </span><span class="identifier">value</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">kind</span><span class="plain"> </span><span class="identifier">K</span><span class="plain"> -> </span><span class="identifier">value</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">kind</span><span class="plain"> </span><span class="identifier">L</span><span class="plain">)</span>
|
|
<span class="identifier">applied</span><span class="plain"> </span><span class="identifier">to</span><span class="plain"> (</span><span class="identifier">input</span><span class="plain"> - </span><span class="identifier">K</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_applied1</span><span class="plain">):</span>
|
|
<span class="plain">(- {-</span><span class="identifier">primitive</span><span class="plain">-</span><span class="identifier">definition</span><span class="plain">:</span><span class="identifier">function</span><span class="plain">-</span><span class="identifier">application</span><span class="plain">} -).</span>
|
|
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">what</span><span class="plain"> </span><span class="identifier">M</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> (</span><span class="identifier">function</span><span class="plain"> - </span><span class="identifier">phrase</span><span class="plain"> (</span><span class="identifier">value</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">kind</span><span class="plain"> </span><span class="identifier">K</span><span class="plain">, </span><span class="identifier">value</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">kind</span><span class="plain"> </span><span class="identifier">L</span><span class="plain">) -> </span><span class="identifier">value</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">kind</span><span class="plain"> </span><span class="identifier">M</span><span class="plain">)</span>
|
|
<span class="identifier">applied</span><span class="plain"> </span><span class="identifier">to</span><span class="plain"> (</span><span class="identifier">input</span><span class="plain"> - </span><span class="identifier">K</span><span class="plain">) </span><span class="identifier">and</span><span class="plain"> (</span><span class="identifier">second</span><span class="plain"> </span><span class="identifier">input</span><span class="plain"> - </span><span class="identifier">L</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_applied2</span><span class="plain">):</span>
|
|
<span class="plain">(- {-</span><span class="identifier">primitive</span><span class="plain">-</span><span class="identifier">definition</span><span class="plain">:</span><span class="identifier">function</span><span class="plain">-</span><span class="identifier">application</span><span class="plain">} -).</span>
|
|
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">what</span><span class="plain"> </span><span class="identifier">N</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> (</span><span class="identifier">function</span><span class="plain"> - </span><span class="identifier">phrase</span><span class="plain"> (</span><span class="identifier">value</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">kind</span><span class="plain"> </span><span class="identifier">K</span><span class="plain">, </span><span class="identifier">value</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">kind</span><span class="plain"> </span><span class="identifier">L</span><span class="plain">, </span><span class="identifier">value</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">kind</span><span class="plain"> </span><span class="identifier">M</span><span class="plain">) -> </span><span class="identifier">value</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">kind</span><span class="plain"> </span><span class="identifier">N</span><span class="plain">)</span>
|
|
<span class="identifier">applied</span><span class="plain"> </span><span class="identifier">to</span><span class="plain"> (</span><span class="identifier">input</span><span class="plain"> - </span><span class="identifier">K</span><span class="plain">) </span><span class="identifier">and</span><span class="plain"> (</span><span class="identifier">second</span><span class="plain"> </span><span class="identifier">input</span><span class="plain"> - </span><span class="identifier">L</span><span class="plain">) </span><span class="identifier">and</span><span class="plain"> (</span><span class="identifier">third</span><span class="plain"> </span><span class="identifier">input</span><span class="plain"> - </span><span class="identifier">M</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_applied3</span><span class="plain">):</span>
|
|
<span class="plain">(- {-</span><span class="identifier">primitive</span><span class="plain">-</span><span class="identifier">definition</span><span class="plain">:</span><span class="identifier">function</span><span class="plain">-</span><span class="identifier">application</span><span class="plain">} -).</span>
|
|
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">apply</span><span class="plain"> (</span><span class="identifier">function</span><span class="plain"> - </span><span class="identifier">phrase</span><span class="plain"> </span><span class="identifier">nothing</span><span class="plain"> -> </span><span class="identifier">nothing</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_apply0</span><span class="plain">):</span>
|
|
<span class="plain">(- {-</span><span class="identifier">primitive</span><span class="plain">-</span><span class="identifier">definition</span><span class="plain">:</span><span class="identifier">function</span><span class="plain">-</span><span class="identifier">application</span><span class="plain">}; -).</span>
|
|
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">apply</span><span class="plain"> (</span><span class="identifier">function</span><span class="plain"> - </span><span class="identifier">phrase</span><span class="plain"> </span><span class="identifier">value</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">kind</span><span class="plain"> </span><span class="identifier">K</span><span class="plain"> -> </span><span class="identifier">nothing</span><span class="plain">)</span>
|
|
<span class="identifier">to</span><span class="plain"> (</span><span class="identifier">input</span><span class="plain"> - </span><span class="identifier">K</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_apply1</span><span class="plain">):</span>
|
|
<span class="plain">(- {-</span><span class="identifier">primitive</span><span class="plain">-</span><span class="identifier">definition</span><span class="plain">:</span><span class="identifier">function</span><span class="plain">-</span><span class="identifier">application</span><span class="plain">}; -).</span>
|
|
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">apply</span><span class="plain"> (</span><span class="identifier">function</span><span class="plain"> - </span><span class="identifier">phrase</span><span class="plain"> (</span><span class="identifier">value</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">kind</span><span class="plain"> </span><span class="identifier">K</span><span class="plain">, </span><span class="identifier">value</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">kind</span><span class="plain"> </span><span class="identifier">L</span><span class="plain">) -> </span><span class="identifier">nothing</span><span class="plain">)</span>
|
|
<span class="identifier">to</span><span class="plain"> (</span><span class="identifier">input</span><span class="plain"> - </span><span class="identifier">K</span><span class="plain">) </span><span class="identifier">and</span><span class="plain"> (</span><span class="identifier">second</span><span class="plain"> </span><span class="identifier">input</span><span class="plain"> - </span><span class="identifier">L</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_apply2</span><span class="plain">):</span>
|
|
<span class="plain">(- {-</span><span class="identifier">primitive</span><span class="plain">-</span><span class="identifier">definition</span><span class="plain">:</span><span class="identifier">function</span><span class="plain">-</span><span class="identifier">application</span><span class="plain">}; -).</span>
|
|
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">apply</span><span class="plain"> (</span><span class="identifier">function</span><span class="plain"> - </span><span class="identifier">phrase</span><span class="plain"> (</span><span class="identifier">value</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">kind</span><span class="plain"> </span><span class="identifier">K</span><span class="plain">, </span><span class="identifier">value</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">kind</span><span class="plain"> </span><span class="identifier">L</span><span class="plain">, </span><span class="identifier">value</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">kind</span><span class="plain"> </span><span class="identifier">M</span><span class="plain">) -> </span><span class="identifier">nothing</span><span class="plain">)</span>
|
|
<span class="identifier">to</span><span class="plain"> (</span><span class="identifier">input</span><span class="plain"> - </span><span class="identifier">K</span><span class="plain">) </span><span class="identifier">and</span><span class="plain"> (</span><span class="identifier">second</span><span class="plain"> </span><span class="identifier">input</span><span class="plain"> - </span><span class="identifier">L</span><span class="plain">) </span><span class="identifier">and</span><span class="plain"> (</span><span class="identifier">third</span><span class="plain"> </span><span class="identifier">input</span><span class="plain"> - </span><span class="identifier">M</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_apply3</span><span class="plain">):</span>
|
|
<span class="plain">(- {-</span><span class="identifier">primitive</span><span class="plain">-</span><span class="identifier">definition</span><span class="plain">:</span><span class="identifier">function</span><span class="plain">-</span><span class="identifier">application</span><span class="plain">}; -).</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP48"></a><b>§48. </b>The standard map, reduce and filter operations found in most functional
|
|
programming languages also have Inform analogues.
|
|
</p>
|
|
|
|
<p class="inwebparagraph">See test case <code class="display"><span class="extract">BIP-Map</span></code>.
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">Section</span><span class="plain"> </span><span class="constant">2</span><span class="plain"> - </span><span class="identifier">Working</span><span class="plain"> </span><span class="identifier">with</span><span class="plain"> </span><span class="identifier">Lists</span>
|
|
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">what</span><span class="plain"> </span><span class="identifier">list</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">L</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> (</span><span class="identifier">function</span><span class="plain"> - </span><span class="identifier">phrase</span><span class="plain"> </span><span class="identifier">K</span><span class="plain"> -> </span><span class="identifier">value</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">kind</span><span class="plain"> </span><span class="identifier">L</span><span class="plain">) </span><span class="identifier">applied</span><span class="plain"> </span><span class="identifier">to</span><span class="plain"> (</span><span class="identifier">original</span><span class="plain"> </span><span class="identifier">list</span><span class="plain"> - </span><span class="identifier">list</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">values</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">kind</span><span class="plain"> </span><span class="identifier">K</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_appliedlist</span><span class="plain">):</span>
|
|
<span class="identifier">let</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">result</span><span class="plain"> </span><span class="identifier">be</span><span class="plain"> </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">list</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">Ls</span><span class="plain">;</span>
|
|
<span class="identifier">repeat</span><span class="plain"> </span><span class="identifier">with</span><span class="plain"> </span><span class="identifier">item</span><span class="plain"> </span><span class="identifier">running</span><span class="plain"> </span><span class="identifier">through</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">original</span><span class="plain"> </span><span class="identifier">list</span><span class="plain">:</span>
|
|
<span class="identifier">let</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">mapped</span><span class="plain"> </span><span class="identifier">item</span><span class="plain"> </span><span class="identifier">be</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">function</span><span class="plain"> </span><span class="identifier">applied</span><span class="plain"> </span><span class="identifier">to</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">item</span><span class="plain">;</span>
|
|
<span class="identifier">add</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">mapped</span><span class="plain"> </span><span class="identifier">item</span><span class="plain"> </span><span class="identifier">to</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">result</span><span class="plain">;</span>
|
|
<span class="identifier">decide</span><span class="plain"> </span><span class="identifier">on</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">result</span><span class="plain">.</span>
|
|
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">what</span><span class="plain"> </span><span class="identifier">K</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> (</span><span class="identifier">function</span><span class="plain"> - </span><span class="identifier">phrase</span><span class="plain"> (</span><span class="identifier">K</span><span class="plain">, </span><span class="identifier">K</span><span class="plain">) -> </span><span class="identifier">K</span><span class="plain">) </span><span class="identifier">reduction</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> (</span><span class="identifier">original</span><span class="plain"> </span><span class="identifier">list</span><span class="plain"> - </span><span class="identifier">list</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">values</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">kind</span><span class="plain"> </span><span class="identifier">K</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_reduction</span><span class="plain">):</span>
|
|
<span class="identifier">let</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">total</span><span class="plain"> </span><span class="identifier">be</span><span class="plain"> </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">K</span><span class="plain">;</span>
|
|
<span class="identifier">let</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">count</span><span class="plain"> </span><span class="identifier">be</span><span class="plain"> </span><span class="constant">0</span><span class="plain">;</span>
|
|
<span class="identifier">repeat</span><span class="plain"> </span><span class="identifier">with</span><span class="plain"> </span><span class="identifier">item</span><span class="plain"> </span><span class="identifier">running</span><span class="plain"> </span><span class="identifier">through</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">original</span><span class="plain"> </span><span class="identifier">list</span><span class="plain">:</span>
|
|
<span class="identifier">increase</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">count</span><span class="plain"> </span><span class="identifier">by</span><span class="plain"> </span><span class="constant">1</span><span class="plain">;</span>
|
|
<span class="identifier">if</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">count</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="constant">1</span><span class="plain">, </span><span class="identifier">now</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">total</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">item</span><span class="plain">;</span>
|
|
<span class="identifier">otherwise</span><span class="plain"> </span><span class="identifier">now</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">total</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">function</span><span class="plain"> </span><span class="identifier">applied</span><span class="plain"> </span><span class="identifier">to</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">total</span><span class="plain"> </span><span class="identifier">and</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">item</span><span class="plain">;</span>
|
|
<span class="identifier">decide</span><span class="plain"> </span><span class="identifier">on</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">total</span><span class="plain">.</span>
|
|
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">what</span><span class="plain"> </span><span class="identifier">list</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">K</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">filter</span><span class="plain"> </span><span class="identifier">to</span><span class="plain"> (</span><span class="identifier">criterion</span><span class="plain"> - </span><span class="identifier">description</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">Ks</span><span class="plain">) </span><span class="identifier">of</span>
|
|
<span class="plain">(</span><span class="identifier">full</span><span class="plain"> </span><span class="identifier">list</span><span class="plain"> - </span><span class="identifier">list</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">values</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">kind</span><span class="plain"> </span><span class="identifier">K</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_filter</span><span class="plain">):</span>
|
|
<span class="identifier">let</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">filtered</span><span class="plain"> </span><span class="identifier">list</span><span class="plain"> </span><span class="identifier">be</span><span class="plain"> </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">list</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">K</span><span class="plain">;</span>
|
|
<span class="identifier">repeat</span><span class="plain"> </span><span class="identifier">with</span><span class="plain"> </span><span class="identifier">item</span><span class="plain"> </span><span class="identifier">running</span><span class="plain"> </span><span class="identifier">through</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">full</span><span class="plain"> </span><span class="identifier">list</span><span class="plain">:</span>
|
|
<span class="identifier">if</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">item</span><span class="plain"> </span><span class="identifier">matches</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">criterion</span><span class="plain">:</span>
|
|
<span class="identifier">add</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">item</span><span class="plain"> </span><span class="identifier">to</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">filtered</span><span class="plain"> </span><span class="identifier">list</span><span class="plain">;</span>
|
|
<span class="identifier">decide</span><span class="plain"> </span><span class="identifier">on</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">filtered</span><span class="plain"> </span><span class="identifier">list</span><span class="plain">.</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP49"></a><b>§49. Rulebooks and Activities. </b></p>
|
|
|
|
<p class="inwebparagraph">Firing off activities:
|
|
</p>
|
|
|
|
<p class="inwebparagraph">See test case <code class="display"><span class="extract">BIP-Activities</span></code>.
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">Chapter</span><span class="plain"> </span><span class="constant">8</span><span class="plain"> - </span><span class="identifier">Rulebooks</span><span class="plain"> </span><span class="identifier">and</span><span class="plain"> </span><span class="identifier">Activities</span>
|
|
|
|
<span class="identifier">Section</span><span class="plain"> </span><span class="constant">1</span><span class="plain"> - </span><span class="identifier">Carrying</span><span class="plain"> </span><span class="identifier">out</span><span class="plain"> </span><span class="identifier">Activities</span>
|
|
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">carry</span><span class="plain"> </span><span class="identifier">out</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> (</span><span class="identifier">A</span><span class="plain"> - </span><span class="identifier">activity</span><span class="plain"> </span><span class="identifier">on</span><span class="plain"> </span><span class="identifier">nothing</span><span class="plain">) </span><span class="identifier">activity</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_carryout</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">CarryOutActivity</span><span class="plain">({</span><span class="identifier">A</span><span class="plain">}); -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">carry</span><span class="plain"> </span><span class="identifier">out</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> (</span><span class="identifier">A</span><span class="plain"> - </span><span class="identifier">activity</span><span class="plain"> </span><span class="identifier">on</span><span class="plain"> </span><span class="identifier">value</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">kind</span><span class="plain"> </span><span class="identifier">K</span><span class="plain">) </span><span class="identifier">activity</span><span class="plain"> </span><span class="identifier">with</span><span class="plain"> (</span><span class="identifier">val</span><span class="plain"> - </span><span class="identifier">K</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_carryoutwith</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">CarryOutActivity</span><span class="plain">({</span><span class="identifier">A</span><span class="plain">}, {</span><span class="identifier">val</span><span class="plain">}); -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">continue</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">activity</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_continueactivity</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">rfalse</span><span class="plain">; -) - </span><span class="identifier">in</span><span class="plain"> </span><span class="identifier">to</span><span class="plain"> </span><span class="identifier">only</span><span class="plain">.</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP50"></a><b>§50. </b>Advanced activity phrases: for setting up one's own activities structured
|
|
around I7 source text. People tend not to use this much, and perhaps that's
|
|
a good thing, but it does open up possibilities, and it's good for
|
|
retro-fitting onto extensions to make them more customisable.
|
|
</p>
|
|
|
|
<p class="inwebparagraph">These are really only useful in an activity-rich environment, in any case.
|
|
See the documentation example <code class="display"><span class="extract">AntSensitiveSunglasses</span></code>.
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">Section</span><span class="plain"> </span><span class="constant">2</span><span class="plain"> - </span><span class="identifier">Advanced</span><span class="plain"> </span><span class="identifier">Activities</span>
|
|
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">begin</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> (</span><span class="identifier">A</span><span class="plain"> - </span><span class="identifier">activity</span><span class="plain"> </span><span class="identifier">on</span><span class="plain"> </span><span class="identifier">nothing</span><span class="plain">) </span><span class="identifier">activity</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_beginactivity</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">BeginActivity</span><span class="plain">({</span><span class="identifier">A</span><span class="plain">}); -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">begin</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> (</span><span class="identifier">A</span><span class="plain"> - </span><span class="identifier">activity</span><span class="plain"> </span><span class="identifier">on</span><span class="plain"> </span><span class="identifier">value</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">kind</span><span class="plain"> </span><span class="identifier">K</span><span class="plain">) </span><span class="identifier">activity</span><span class="plain"> </span><span class="identifier">with</span><span class="plain"> (</span><span class="identifier">val</span><span class="plain"> - </span><span class="identifier">K</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_beginactivitywith</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">BeginActivity</span><span class="plain">({</span><span class="identifier">A</span><span class="plain">}, {</span><span class="identifier">val</span><span class="plain">}); -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">whether</span><span class="plain"> </span><span class="identifier">handling</span><span class="plain"> (</span><span class="identifier">A</span><span class="plain"> - </span><span class="identifier">activity</span><span class="plain">) </span><span class="identifier">activity</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_handlingactivity</span><span class="plain">):</span>
|
|
<span class="plain">(- (~~(</span><span class="identifier">ForActivity</span><span class="plain">({</span><span class="identifier">A</span><span class="plain">}))) -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">whether</span><span class="plain"> </span><span class="identifier">handling</span><span class="plain"> (</span><span class="identifier">A</span><span class="plain"> - </span><span class="identifier">activity</span><span class="plain"> </span><span class="identifier">on</span><span class="plain"> </span><span class="identifier">value</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">kind</span><span class="plain"> </span><span class="identifier">K</span><span class="plain">) </span><span class="identifier">activity</span><span class="plain"> </span><span class="identifier">with</span><span class="plain"> (</span><span class="identifier">val</span><span class="plain"> - </span><span class="identifier">K</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_handlingactivitywith</span><span class="plain">):</span>
|
|
<span class="plain">(- (~~(</span><span class="identifier">ForActivity</span><span class="plain">({</span><span class="identifier">A</span><span class="plain">}, {</span><span class="identifier">val</span><span class="plain">}))) -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">end</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> (</span><span class="identifier">A</span><span class="plain"> - </span><span class="identifier">activity</span><span class="plain"> </span><span class="identifier">on</span><span class="plain"> </span><span class="identifier">nothing</span><span class="plain">) </span><span class="identifier">activity</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_endactivity</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">EndActivity</span><span class="plain">({</span><span class="identifier">A</span><span class="plain">}); -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">end</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> (</span><span class="identifier">A</span><span class="plain"> - </span><span class="identifier">activity</span><span class="plain"> </span><span class="identifier">on</span><span class="plain"> </span><span class="identifier">value</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">kind</span><span class="plain"> </span><span class="identifier">K</span><span class="plain">) </span><span class="identifier">activity</span><span class="plain"> </span><span class="identifier">with</span><span class="plain"> (</span><span class="identifier">val</span><span class="plain"> - </span><span class="identifier">K</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_endactivitywith</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">EndActivity</span><span class="plain">({</span><span class="identifier">A</span><span class="plain">}, {</span><span class="identifier">val</span><span class="plain">}); -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">abandon</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> (</span><span class="identifier">A</span><span class="plain"> - </span><span class="identifier">activity</span><span class="plain"> </span><span class="identifier">on</span><span class="plain"> </span><span class="identifier">nothing</span><span class="plain">) </span><span class="identifier">activity</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_abandonactivity</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">AbandonActivity</span><span class="plain">({</span><span class="identifier">A</span><span class="plain">}); -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">abandon</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> (</span><span class="identifier">A</span><span class="plain"> - </span><span class="identifier">activity</span><span class="plain"> </span><span class="identifier">on</span><span class="plain"> </span><span class="identifier">value</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">kind</span><span class="plain"> </span><span class="identifier">K</span><span class="plain">) </span><span class="identifier">activity</span><span class="plain"> </span><span class="identifier">with</span><span class="plain"> (</span><span class="identifier">val</span><span class="plain"> - </span><span class="identifier">K</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_abandonactivitywith</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">AbandonActivity</span><span class="plain">({</span><span class="identifier">A</span><span class="plain">}, {</span><span class="identifier">val</span><span class="plain">}); -).</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP51"></a><b>§51. </b>Here are four different ways to invoke a rule or rulebook:
|
|
</p>
|
|
|
|
<p class="inwebparagraph">See test case <code class="display"><span class="extract">BIP-Rules</span></code>.
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">Section</span><span class="plain"> </span><span class="constant">3</span><span class="plain"> - </span><span class="identifier">Following</span><span class="plain"> </span><span class="identifier">Rules</span>
|
|
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">follow</span><span class="plain"> (</span><span class="identifier">RL</span><span class="plain"> - </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">rule</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_follow</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">FollowRulebook</span><span class="plain">({</span><span class="identifier">RL</span><span class="plain">}); -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">follow</span><span class="plain"> (</span><span class="identifier">RL</span><span class="plain"> - </span><span class="identifier">value</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">kind</span><span class="plain"> </span><span class="identifier">K</span><span class="plain"> </span><span class="identifier">based</span><span class="plain"> </span><span class="identifier">rule</span><span class="plain"> </span><span class="identifier">producing</span><span class="plain"> </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">value</span><span class="plain">) </span><span class="identifier">for</span><span class="plain"> (</span><span class="identifier">V</span><span class="plain"> - </span><span class="identifier">K</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_followfor</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">FollowRulebook</span><span class="plain">({</span><span class="identifier">RL</span><span class="plain">}, {</span><span class="identifier">V</span><span class="plain">}, </span><span class="identifier">true</span><span class="plain">); -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">follow</span><span class="plain"> (</span><span class="identifier">RL</span><span class="plain"> - </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">nothing</span><span class="plain"> </span><span class="identifier">based</span><span class="plain"> </span><span class="identifier">rule</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_follow</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">FollowRulebook</span><span class="plain">({</span><span class="identifier">RL</span><span class="plain">}); -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">what</span><span class="plain"> </span><span class="identifier">K</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> (</span><span class="identifier">name</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">kind</span><span class="plain"> </span><span class="identifier">K</span><span class="plain">) </span><span class="identifier">produced</span><span class="plain"> </span><span class="identifier">by</span><span class="plain"> (</span><span class="identifier">RL</span><span class="plain"> - </span><span class="identifier">rule</span><span class="plain"> </span><span class="identifier">producing</span><span class="plain"> </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">value</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">kind</span><span class="plain"> </span><span class="identifier">K</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_producedby</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">ResultOfRule</span><span class="plain">({</span><span class="identifier">RL</span><span class="plain">}, </span><span class="constant">0</span><span class="plain">, </span><span class="identifier">true</span><span class="plain">, {-</span><span class="identifier">strong</span><span class="plain">-</span><span class="identifier">kind</span><span class="plain">:</span><span class="identifier">K</span><span class="plain">}) -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">what</span><span class="plain"> </span><span class="identifier">L</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> (</span><span class="identifier">name</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">kind</span><span class="plain"> </span><span class="identifier">L</span><span class="plain">) </span><span class="identifier">produced</span><span class="plain"> </span><span class="identifier">by</span><span class="plain"> (</span><span class="identifier">RL</span><span class="plain"> - </span><span class="identifier">value</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">kind</span><span class="plain"> </span><span class="identifier">K</span><span class="plain"> </span><span class="identifier">based</span><span class="plain"> </span><span class="identifier">rule</span>
|
|
<span class="identifier">producing</span><span class="plain"> </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">value</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">kind</span><span class="plain"> </span><span class="identifier">L</span><span class="plain">) </span><span class="identifier">for</span><span class="plain"> (</span><span class="identifier">V</span><span class="plain"> - </span><span class="identifier">K</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_producedbyfor</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">ResultOfRule</span><span class="plain">({</span><span class="identifier">RL</span><span class="plain">}, {</span><span class="identifier">V</span><span class="plain">}, </span><span class="identifier">true</span><span class="plain">, {-</span><span class="identifier">strong</span><span class="plain">-</span><span class="identifier">kind</span><span class="plain">:</span><span class="identifier">L</span><span class="plain">}) -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">what</span><span class="plain"> </span><span class="identifier">K</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> (</span><span class="identifier">name</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">kind</span><span class="plain"> </span><span class="identifier">K</span><span class="plain">) </span><span class="identifier">produced</span><span class="plain"> </span><span class="identifier">by</span><span class="plain"> (</span><span class="identifier">RL</span><span class="plain"> - </span><span class="identifier">nothing</span><span class="plain"> </span><span class="identifier">based</span><span class="plain"> </span><span class="identifier">rule</span><span class="plain"> </span><span class="identifier">producing</span><span class="plain"> </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">value</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">kind</span><span class="plain"> </span><span class="identifier">K</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_producedby</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">ResultOfRule</span><span class="plain">({</span><span class="identifier">RL</span><span class="plain">}, </span><span class="constant">0</span><span class="plain">, </span><span class="identifier">true</span><span class="plain">, {-</span><span class="identifier">strong</span><span class="plain">-</span><span class="identifier">kind</span><span class="plain">:</span><span class="identifier">K</span><span class="plain">}) -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">abide</span><span class="plain"> </span><span class="identifier">by</span><span class="plain"> (</span><span class="identifier">RL</span><span class="plain"> - </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">rule</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_abide</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">if</span><span class="plain"> (</span><span class="identifier">FollowRulebook</span><span class="plain">({</span><span class="identifier">RL</span><span class="plain">})) </span><span class="identifier">rtrue</span><span class="plain">; -) - </span><span class="identifier">in</span><span class="plain"> </span><span class="identifier">to</span><span class="plain"> </span><span class="identifier">only</span><span class="plain">.</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">abide</span><span class="plain"> </span><span class="identifier">by</span><span class="plain"> (</span><span class="identifier">RL</span><span class="plain"> - </span><span class="identifier">value</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">kind</span><span class="plain"> </span><span class="identifier">K</span><span class="plain"> </span><span class="identifier">based</span><span class="plain"> </span><span class="identifier">rule</span><span class="plain"> </span><span class="identifier">producing</span><span class="plain"> </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">value</span><span class="plain">) </span><span class="identifier">for</span><span class="plain"> (</span><span class="identifier">V</span><span class="plain"> - </span><span class="identifier">K</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_abidefor</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">if</span><span class="plain"> (</span><span class="identifier">FollowRulebook</span><span class="plain">({</span><span class="identifier">RL</span><span class="plain">}, {</span><span class="identifier">V</span><span class="plain">}, </span><span class="identifier">true</span><span class="plain">)) </span><span class="identifier">rtrue</span><span class="plain">; -) - </span><span class="identifier">in</span><span class="plain"> </span><span class="identifier">to</span><span class="plain"> </span><span class="identifier">only</span><span class="plain">.</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">abide</span><span class="plain"> </span><span class="identifier">by</span><span class="plain"> (</span><span class="identifier">RL</span><span class="plain"> - </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">nothing</span><span class="plain"> </span><span class="identifier">based</span><span class="plain"> </span><span class="identifier">rule</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_abide</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">if</span><span class="plain"> (</span><span class="identifier">FollowRulebook</span><span class="plain">({</span><span class="identifier">RL</span><span class="plain">})) </span><span class="identifier">rtrue</span><span class="plain">; -) - </span><span class="identifier">in</span><span class="plain"> </span><span class="identifier">to</span><span class="plain"> </span><span class="identifier">only</span><span class="plain">.</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP52"></a><b>§52. </b>Rules return <code class="display"><span class="extract">true</span></code> to indicate a decision, which could be either a success
|
|
or a failure, and optionally may also return a value. If they return <code class="display"><span class="extract">false</span></code>,
|
|
there's no decision.
|
|
</p>
|
|
|
|
<p class="inwebparagraph">See test case <code class="display"><span class="extract">BIP-Rules</span></code> once again.
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">Section</span><span class="plain"> </span><span class="constant">4</span><span class="plain"> - </span><span class="identifier">Success</span><span class="plain"> </span><span class="identifier">and</span><span class="plain"> </span><span class="identifier">Failure</span>
|
|
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">make</span><span class="plain"> </span><span class="identifier">no</span><span class="plain"> </span><span class="identifier">decision</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_nodecision</span><span class="plain">): (- </span><span class="identifier">rfalse</span><span class="plain">; -) - </span><span class="identifier">in</span><span class="plain"> </span><span class="identifier">to</span><span class="plain"> </span><span class="identifier">only</span><span class="plain">.</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">rule</span><span class="plain"> </span><span class="identifier">succeeds</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_succeeds</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">RulebookSucceeds</span><span class="plain">(); </span><span class="identifier">rtrue</span><span class="plain">; -) - </span><span class="identifier">in</span><span class="plain"> </span><span class="identifier">to</span><span class="plain"> </span><span class="identifier">only</span><span class="plain">.</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">rule</span><span class="plain"> </span><span class="identifier">fails</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_fails</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">RulebookFails</span><span class="plain">(); </span><span class="identifier">rtrue</span><span class="plain">; -) - </span><span class="identifier">in</span><span class="plain"> </span><span class="identifier">to</span><span class="plain"> </span><span class="identifier">only</span><span class="plain">.</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">rule</span><span class="plain"> </span><span class="identifier">succeeds</span><span class="plain"> </span><span class="identifier">with</span><span class="plain"> </span><span class="identifier">result</span><span class="plain"> (</span><span class="identifier">val</span><span class="plain"> - </span><span class="identifier">a</span><span class="plain"> </span><span class="identifier">value</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_succeedswith</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">RulebookSucceeds</span><span class="plain">({-</span><span class="identifier">weak</span><span class="plain">-</span><span class="identifier">kind</span><span class="plain">:</span><span class="identifier">rule</span><span class="plain">-</span><span class="identifier">return</span><span class="plain">-</span><span class="identifier">kind</span><span class="plain">},{-</span><span class="identifier">return</span><span class="plain">-</span><span class="identifier">value</span><span class="plain">-</span><span class="identifier">from</span><span class="plain">-</span><span class="identifier">rule</span><span class="plain">:</span><span class="identifier">val</span><span class="plain">}); </span><span class="identifier">rtrue</span><span class="plain">; -) - </span><span class="identifier">in</span><span class="plain"> </span><span class="identifier">to</span><span class="plain"> </span><span class="identifier">only</span><span class="plain">.</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">if</span><span class="plain"> </span><span class="identifier">rule</span><span class="plain"> </span><span class="identifier">succeeded</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_succeeded</span><span class="plain">):</span>
|
|
<span class="plain">(- (</span><span class="identifier">RulebookSucceeded</span><span class="plain">()) -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">if</span><span class="plain"> </span><span class="identifier">rule</span><span class="plain"> </span><span class="identifier">failed</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_failed</span><span class="plain">):</span>
|
|
<span class="plain">(- (</span><span class="identifier">RulebookFailed</span><span class="plain">()) -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">which</span><span class="plain"> </span><span class="identifier">rulebook</span><span class="plain"> </span><span class="identifier">outcome</span><span class="plain"> </span><span class="identifier">is</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">outcome</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">the</span><span class="plain"> </span><span class="identifier">rulebook</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_rulebookoutcome</span><span class="plain">):</span>
|
|
<span class="plain">(- (</span><span class="identifier">ResultOfRule</span><span class="plain">()) -).</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP53"></a><b>§53. External Files. </b>Inform has a quirky level of support for file-handling, which comes out what
|
|
the Glulx virtual machine will support.
|
|
</p>
|
|
|
|
<p class="inwebparagraph">See test case <code class="display"><span class="extract">BIP-Files-G</span></code>, which has no Z-machine counterpart.
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">Chapter</span><span class="plain"> </span><span class="constant">9</span><span class="plain"> - </span><span class="identifier">External</span><span class="plain"> </span><span class="identifier">Files</span><span class="plain"> (</span><span class="identifier">not</span><span class="plain"> </span><span class="identifier">for</span><span class="plain"> </span><span class="identifier">Z</span><span class="plain">-</span><span class="identifier">machine</span><span class="plain">)</span>
|
|
|
|
<span class="identifier">Section</span><span class="plain"> </span><span class="constant">1</span><span class="plain"> - </span><span class="identifier">Files</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">Text</span>
|
|
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">write</span><span class="plain"> (</span><span class="identifier">T</span><span class="plain"> - </span><span class="identifier">text</span><span class="plain">) </span><span class="identifier">to</span><span class="plain"> (</span><span class="identifier">FN</span><span class="plain"> - </span><span class="identifier">external</span><span class="plain"> </span><span class="identifier">file</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_writetext</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">FileIO_PutContents</span><span class="plain">({</span><span class="identifier">FN</span><span class="plain">}, {</span><span class="identifier">T</span><span class="plain">}, </span><span class="identifier">false</span><span class="plain">); -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">append</span><span class="plain"> (</span><span class="identifier">T</span><span class="plain"> - </span><span class="identifier">text</span><span class="plain">) </span><span class="identifier">to</span><span class="plain"> (</span><span class="identifier">FN</span><span class="plain"> - </span><span class="identifier">external</span><span class="plain"> </span><span class="identifier">file</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_appendtext</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">FileIO_PutContents</span><span class="plain">({</span><span class="identifier">FN</span><span class="plain">}, {</span><span class="identifier">T</span><span class="plain">}, </span><span class="identifier">true</span><span class="plain">); -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">say</span><span class="plain"> </span><span class="identifier">text</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> (</span><span class="identifier">FN</span><span class="plain"> - </span><span class="identifier">external</span><span class="plain"> </span><span class="identifier">file</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_saytext</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">FileIO_PrintContents</span><span class="plain">({</span><span class="identifier">FN</span><span class="plain">}); </span><span class="identifier">say__p</span><span class="plain"> = </span><span class="constant">1</span><span class="plain">; -).</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP54"></a><b>§54. </b>See test case <code class="display"><span class="extract">BIP-FilesOfTables-G</span></code>, which has no Z-machine counterpart.
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">Section</span><span class="plain"> </span><span class="constant">2</span><span class="plain"> - </span><span class="identifier">Files</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> </span><span class="identifier">Data</span>
|
|
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">read</span><span class="plain"> (</span><span class="identifier">filename</span><span class="plain"> - </span><span class="identifier">external</span><span class="plain"> </span><span class="identifier">file</span><span class="plain">) </span><span class="identifier">into</span><span class="plain"> (</span><span class="identifier">T</span><span class="plain"> - </span><span class="identifier">table</span><span class="plain"> </span><span class="identifier">name</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_readtable</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">FileIO_GetTable</span><span class="plain">({</span><span class="identifier">filename</span><span class="plain">}, {</span><span class="identifier">T</span><span class="plain">}); -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">write</span><span class="plain"> (</span><span class="identifier">filename</span><span class="plain"> - </span><span class="identifier">external</span><span class="plain"> </span><span class="identifier">file</span><span class="plain">) </span><span class="identifier">from</span><span class="plain"> (</span><span class="identifier">T</span><span class="plain"> - </span><span class="identifier">table</span><span class="plain"> </span><span class="identifier">name</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_writetable</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">FileIO_PutTable</span><span class="plain">({</span><span class="identifier">filename</span><span class="plain">}, {</span><span class="identifier">T</span><span class="plain">}); -).</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP55"></a><b>§55. </b>These are hardly used phrases which are difficult to test convincingly
|
|
in our framework, since they defend against independent Inform programs
|
|
simultaneously trying to access the same file.
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">Section</span><span class="plain"> </span><span class="constant">3</span><span class="plain"> - </span><span class="identifier">File</span><span class="plain"> </span><span class="identifier">Handling</span>
|
|
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">if</span><span class="plain"> (</span><span class="identifier">filename</span><span class="plain"> - </span><span class="identifier">external</span><span class="plain"> </span><span class="identifier">file</span><span class="plain">) </span><span class="identifier">exists</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_fileexists</span><span class="plain">):</span>
|
|
<span class="plain">(- (</span><span class="identifier">FileIO_Exists</span><span class="plain">({</span><span class="identifier">filename</span><span class="plain">}, </span><span class="identifier">false</span><span class="plain">)) -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">decide</span><span class="plain"> </span><span class="identifier">if</span><span class="plain"> </span><span class="identifier">ready</span><span class="plain"> </span><span class="identifier">to</span><span class="plain"> </span><span class="identifier">read</span><span class="plain"> (</span><span class="identifier">filename</span><span class="plain"> - </span><span class="identifier">external</span><span class="plain"> </span><span class="identifier">file</span><span class="plain">)</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_fileready</span><span class="plain">):</span>
|
|
<span class="plain">(- (</span><span class="identifier">FileIO_Ready</span><span class="plain">({</span><span class="identifier">filename</span><span class="plain">}, </span><span class="identifier">false</span><span class="plain">)) -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">mark</span><span class="plain"> (</span><span class="identifier">filename</span><span class="plain"> - </span><span class="identifier">external</span><span class="plain"> </span><span class="identifier">file</span><span class="plain">) </span><span class="identifier">as</span><span class="plain"> </span><span class="identifier">ready</span><span class="plain"> </span><span class="identifier">to</span><span class="plain"> </span><span class="identifier">read</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_markfileready</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">FileIO_MarkReady</span><span class="plain">({</span><span class="identifier">filename</span><span class="plain">}, </span><span class="identifier">true</span><span class="plain">); -).</span>
|
|
<span class="identifier">To</span><span class="plain"> </span><span class="identifier">mark</span><span class="plain"> (</span><span class="identifier">filename</span><span class="plain"> - </span><span class="identifier">external</span><span class="plain"> </span><span class="identifier">file</span><span class="plain">) </span><span class="identifier">as</span><span class="plain"> </span><span class="identifier">not</span><span class="plain"> </span><span class="identifier">ready</span><span class="plain"> </span><span class="identifier">to</span><span class="plain"> </span><span class="identifier">read</span>
|
|
<span class="plain">(</span><span class="identifier">documented</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> </span><span class="identifier">ph_markfilenotready</span><span class="plain">):</span>
|
|
<span class="plain">(- </span><span class="identifier">FileIO_MarkReady</span><span class="plain">({</span><span class="identifier">filename</span><span class="plain">}, </span><span class="identifier">false</span><span class="plain">); -).</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<hr class="tocbar">
|
|
<ul class="toc"><li><a href="S-md.html">Back to 'Miscellaneous Definitions'</a></li><li><a href="S-ad.html">Continue with 'Adjectival Definitions'</a></li></ul><hr class="tocbar">
|
|
<!--End of weave-->
|
|
</main>
|
|
</body>
|
|
</html>
|
|
|