2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
3 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5 <html xmlns="http://www.w3.org/1999/xhtml">
7 <meta http-equiv="X-UA-Compatible" content="IE=Edge" />
8 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
9 <title>Functions Grouped by, er, Function with Examples — Thun 0.2.0 documentation</title>
10 <link rel="stylesheet" href="_static/alabaster.css" type="text/css" />
11 <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
12 <script type="text/javascript" src="_static/documentation_options.js"></script>
13 <script type="text/javascript" src="_static/jquery.js"></script>
14 <script type="text/javascript" src="_static/underscore.js"></script>
15 <script type="text/javascript" src="_static/doctools.js"></script>
16 <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
17 <link rel="index" title="Index" href="genindex.html" />
18 <link rel="search" title="Search" href="search.html" />
19 <link rel="next" title="Type Inference of Joy Expressions" href="types.html" />
20 <link rel="prev" title="Function Reference" href="library.html" />
22 <link rel="stylesheet" href="_static/custom.css" type="text/css" />
25 <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
30 <div class="document">
31 <div class="documentwrapper">
32 <div class="bodywrapper">
33 <div class="body" role="main">
35 <div class="section" id="functions-grouped-by-er-function-with-examples">
36 <h1>Functions Grouped by, er, Function with Examples<a class="headerlink" href="#functions-grouped-by-er-function-with-examples" title="Permalink to this headline">¶</a></h1>
37 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">notebook_preamble</span> <span class="k">import</span> <span class="n">J</span><span class="p">,</span> <span class="n">V</span>
40 <div class="section" id="stack-chatter">
41 <h2>Stack Chatter<a class="headerlink" href="#stack-chatter" title="Permalink to this headline">¶</a></h2>
42 <p>This is what I like to call the functions that just rearrange things on
43 the stack. (One thing I want to mention is that during a hypothetical
44 compilation phase these “stack chatter” words effectively disappear
45 because we can map the logical stack locations to registers that remain
46 static for the duration of the computation. This remains to be done but
47 it’s “off the shelf” technology.)</p>
48 <div class="section" id="clear">
49 <h3><code class="docutils literal notranslate"><span class="pre">clear</span></code><a class="headerlink" href="#clear" title="Permalink to this headline">¶</a></h3>
50 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'1 2 3 clear'</span><span class="p">)</span>
53 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">(</span><span class="n">nothing</span><span class="p">)</span>
57 <div class="section" id="dup-dupd">
58 <h3><code class="docutils literal notranslate"><span class="pre">dup</span></code> <code class="docutils literal notranslate"><span class="pre">dupd</span></code><a class="headerlink" href="#dup-dupd" title="Permalink to this headline">¶</a></h3>
59 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'1 2 3 dup'</span><span class="p">)</span>
62 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">1</span> <span class="mi">2</span> <span class="mi">3</span> <span class="mi">3</span>
65 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'1 2 3 dupd'</span><span class="p">)</span>
68 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">1</span> <span class="mi">2</span> <span class="mi">2</span> <span class="mi">3</span>
72 <div class="section" id="enstacken-disenstacken-stack-unstack">
73 <h3><code class="docutils literal notranslate"><span class="pre">enstacken</span></code> <code class="docutils literal notranslate"><span class="pre">disenstacken</span></code> <code class="docutils literal notranslate"><span class="pre">stack</span></code> <code class="docutils literal notranslate"><span class="pre">unstack</span></code><a class="headerlink" href="#enstacken-disenstacken-stack-unstack" title="Permalink to this headline">¶</a></h3>
74 <p>(I may have these paired up wrong. I.e. <code class="docutils literal notranslate"><span class="pre">disenstacken</span></code> should be
75 <code class="docutils literal notranslate"><span class="pre">unstack</span></code> and vice versa.)</p>
76 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'1 2 3 enstacken'</span><span class="p">)</span> <span class="c1"># Replace the stack with a quote of itself.</span>
79 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">[</span><span class="mi">3</span> <span class="mi">2</span> <span class="mi">1</span><span class="p">]</span>
82 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'4 5 6 [3 2 1] disenstacken'</span><span class="p">)</span> <span class="c1"># Unpack a list onto the stack.</span>
85 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">4</span> <span class="mi">5</span> <span class="mi">6</span> <span class="mi">3</span> <span class="mi">2</span> <span class="mi">1</span>
88 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'1 2 3 stack'</span><span class="p">)</span> <span class="c1"># Get the stack on the stack.</span>
91 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">1</span> <span class="mi">2</span> <span class="mi">3</span> <span class="p">[</span><span class="mi">3</span> <span class="mi">2</span> <span class="mi">1</span><span class="p">]</span>
94 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'1 2 3 [4 5 6] unstack'</span><span class="p">)</span> <span class="c1"># Replace the stack with the list on top.</span>
95 <span class="c1"># The items appear reversed but they are not,</span>
96 <span class="c1"># 4 is on the top of both the list and the stack.</span>
99 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">6</span> <span class="mi">5</span> <span class="mi">4</span>
103 <div class="section" id="pop-popd-popop">
104 <h3><code class="docutils literal notranslate"><span class="pre">pop</span></code> <code class="docutils literal notranslate"><span class="pre">popd</span></code> <code class="docutils literal notranslate"><span class="pre">popop</span></code><a class="headerlink" href="#pop-popd-popop" title="Permalink to this headline">¶</a></h3>
105 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'1 2 3 pop'</span><span class="p">)</span>
108 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">1</span> <span class="mi">2</span>
111 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'1 2 3 popd'</span><span class="p">)</span>
114 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">1</span> <span class="mi">3</span>
117 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'1 2 3 popop'</span><span class="p">)</span>
120 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">1</span>
124 <div class="section" id="roll-rolldown-roll-rollup">
125 <h3><code class="docutils literal notranslate"><span class="pre">roll<</span></code> <code class="docutils literal notranslate"><span class="pre">rolldown</span></code> <code class="docutils literal notranslate"><span class="pre">roll></span></code> <code class="docutils literal notranslate"><span class="pre">rollup</span></code><a class="headerlink" href="#roll-rolldown-roll-rollup" title="Permalink to this headline">¶</a></h3>
126 <p>The “down” and “up” refer to the movement of two of the top three items
127 (displacing the third.)</p>
128 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'1 2 3 roll<'</span><span class="p">)</span>
131 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">2</span> <span class="mi">3</span> <span class="mi">1</span>
134 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'1 2 3 roll>'</span><span class="p">)</span>
137 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">3</span> <span class="mi">1</span> <span class="mi">2</span>
141 <div class="section" id="swap">
142 <h3><code class="docutils literal notranslate"><span class="pre">swap</span></code><a class="headerlink" href="#swap" title="Permalink to this headline">¶</a></h3>
143 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'1 2 3 swap'</span><span class="p">)</span>
146 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">1</span> <span class="mi">3</span> <span class="mi">2</span>
150 <div class="section" id="tuck-over">
151 <h3><code class="docutils literal notranslate"><span class="pre">tuck</span></code> <code class="docutils literal notranslate"><span class="pre">over</span></code><a class="headerlink" href="#tuck-over" title="Permalink to this headline">¶</a></h3>
152 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'1 2 3 tuck'</span><span class="p">)</span>
155 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">1</span> <span class="mi">3</span> <span class="mi">2</span> <span class="mi">3</span>
158 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'1 2 3 over'</span><span class="p">)</span>
161 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">1</span> <span class="mi">2</span> <span class="mi">3</span> <span class="mi">2</span>
165 <div class="section" id="unit-quoted-unquoted">
166 <h3><code class="docutils literal notranslate"><span class="pre">unit</span></code> <code class="docutils literal notranslate"><span class="pre">quoted</span></code> <code class="docutils literal notranslate"><span class="pre">unquoted</span></code><a class="headerlink" href="#unit-quoted-unquoted" title="Permalink to this headline">¶</a></h3>
167 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'1 2 3 unit'</span><span class="p">)</span>
170 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">1</span> <span class="mi">2</span> <span class="p">[</span><span class="mi">3</span><span class="p">]</span>
173 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'1 2 3 quoted'</span><span class="p">)</span>
176 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">1</span> <span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="mi">3</span>
179 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'1 [2] 3 unquoted'</span><span class="p">)</span>
182 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">1</span> <span class="mi">2</span> <span class="mi">3</span>
185 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">V</span><span class="p">(</span><span class="s1">'1 [dup] 3 unquoted'</span><span class="p">)</span> <span class="c1"># Unquoting evaluates. Be aware.</span>
188 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span> <span class="o">.</span> <span class="mi">1</span> <span class="p">[</span><span class="n">dup</span><span class="p">]</span> <span class="mi">3</span> <span class="n">unquoted</span>
189 <span class="mi">1</span> <span class="o">.</span> <span class="p">[</span><span class="n">dup</span><span class="p">]</span> <span class="mi">3</span> <span class="n">unquoted</span>
190 <span class="mi">1</span> <span class="p">[</span><span class="n">dup</span><span class="p">]</span> <span class="o">.</span> <span class="mi">3</span> <span class="n">unquoted</span>
191 <span class="mi">1</span> <span class="p">[</span><span class="n">dup</span><span class="p">]</span> <span class="mi">3</span> <span class="o">.</span> <span class="n">unquoted</span>
192 <span class="mi">1</span> <span class="p">[</span><span class="n">dup</span><span class="p">]</span> <span class="mi">3</span> <span class="o">.</span> <span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="n">dip</span>
193 <span class="mi">1</span> <span class="p">[</span><span class="n">dup</span><span class="p">]</span> <span class="mi">3</span> <span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">.</span> <span class="n">dip</span>
194 <span class="mi">1</span> <span class="p">[</span><span class="n">dup</span><span class="p">]</span> <span class="o">.</span> <span class="n">i</span> <span class="mi">3</span>
195 <span class="mi">1</span> <span class="o">.</span> <span class="n">dup</span> <span class="mi">3</span>
196 <span class="mi">1</span> <span class="mi">1</span> <span class="o">.</span> <span class="mi">3</span>
197 <span class="mi">1</span> <span class="mi">1</span> <span class="mi">3</span> <span class="o">.</span>
202 <div class="section" id="list-words">
203 <h2>List words<a class="headerlink" href="#list-words" title="Permalink to this headline">¶</a></h2>
204 <div class="section" id="concat-swoncat-shunt">
205 <h3><code class="docutils literal notranslate"><span class="pre">concat</span></code> <code class="docutils literal notranslate"><span class="pre">swoncat</span></code> <code class="docutils literal notranslate"><span class="pre">shunt</span></code><a class="headerlink" href="#concat-swoncat-shunt" title="Permalink to this headline">¶</a></h3>
206 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'[1 2 3] [4 5 6] concat'</span><span class="p">)</span>
209 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">[</span><span class="mi">1</span> <span class="mi">2</span> <span class="mi">3</span> <span class="mi">4</span> <span class="mi">5</span> <span class="mi">6</span><span class="p">]</span>
212 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'[1 2 3] [4 5 6] swoncat'</span><span class="p">)</span>
215 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">[</span><span class="mi">4</span> <span class="mi">5</span> <span class="mi">6</span> <span class="mi">1</span> <span class="mi">2</span> <span class="mi">3</span><span class="p">]</span>
218 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'[1 2 3] [4 5 6] shunt'</span><span class="p">)</span>
221 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">[</span><span class="mi">6</span> <span class="mi">5</span> <span class="mi">4</span> <span class="mi">1</span> <span class="mi">2</span> <span class="mi">3</span><span class="p">]</span>
225 <div class="section" id="cons-swons-uncons">
226 <h3><code class="docutils literal notranslate"><span class="pre">cons</span></code> <code class="docutils literal notranslate"><span class="pre">swons</span></code> <code class="docutils literal notranslate"><span class="pre">uncons</span></code><a class="headerlink" href="#cons-swons-uncons" title="Permalink to this headline">¶</a></h3>
227 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'1 [2 3] cons'</span><span class="p">)</span>
230 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">[</span><span class="mi">1</span> <span class="mi">2</span> <span class="mi">3</span><span class="p">]</span>
233 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'[2 3] 1 swons'</span><span class="p">)</span>
236 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">[</span><span class="mi">1</span> <span class="mi">2</span> <span class="mi">3</span><span class="p">]</span>
239 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'[1 2 3] uncons'</span><span class="p">)</span>
242 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">1</span> <span class="p">[</span><span class="mi">2</span> <span class="mi">3</span><span class="p">]</span>
246 <div class="section" id="first-second-third-rest">
247 <h3><code class="docutils literal notranslate"><span class="pre">first</span></code> <code class="docutils literal notranslate"><span class="pre">second</span></code> <code class="docutils literal notranslate"><span class="pre">third</span></code> <code class="docutils literal notranslate"><span class="pre">rest</span></code><a class="headerlink" href="#first-second-third-rest" title="Permalink to this headline">¶</a></h3>
248 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'[1 2 3 4] first'</span><span class="p">)</span>
251 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">1</span>
254 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'[1 2 3 4] second'</span><span class="p">)</span>
257 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">2</span>
260 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'[1 2 3 4] third'</span><span class="p">)</span>
263 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">3</span>
266 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'[1 2 3 4] rest'</span><span class="p">)</span>
269 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">[</span><span class="mi">2</span> <span class="mi">3</span> <span class="mi">4</span><span class="p">]</span>
273 <div class="section" id="flatten">
274 <h3><code class="docutils literal notranslate"><span class="pre">flatten</span></code><a class="headerlink" href="#flatten" title="Permalink to this headline">¶</a></h3>
275 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'[[1] [2 [3] 4] [5 6]] flatten'</span><span class="p">)</span>
278 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">[</span><span class="mi">1</span> <span class="mi">2</span> <span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="mi">4</span> <span class="mi">5</span> <span class="mi">6</span><span class="p">]</span>
282 <div class="section" id="getitem-at-of-drop-take">
283 <h3><code class="docutils literal notranslate"><span class="pre">getitem</span></code> <code class="docutils literal notranslate"><span class="pre">at</span></code> <code class="docutils literal notranslate"><span class="pre">of</span></code> <code class="docutils literal notranslate"><span class="pre">drop</span></code> <code class="docutils literal notranslate"><span class="pre">take</span></code><a class="headerlink" href="#getitem-at-of-drop-take" title="Permalink to this headline">¶</a></h3>
284 <p><code class="docutils literal notranslate"><span class="pre">at</span></code> and <code class="docutils literal notranslate"><span class="pre">getitem</span></code> are the same function. <code class="docutils literal notranslate"><span class="pre">of</span> <span class="pre">==</span> <span class="pre">swap</span> <span class="pre">at</span></code></p>
285 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'[10 11 12 13 14] 2 getitem'</span><span class="p">)</span>
288 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">12</span>
291 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'[1 2 3 4] 0 at'</span><span class="p">)</span>
294 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">1</span>
297 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'2 [1 2 3 4] of'</span><span class="p">)</span>
300 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">3</span>
303 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'[1 2 3 4] 2 drop'</span><span class="p">)</span>
306 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">[</span><span class="mi">3</span> <span class="mi">4</span><span class="p">]</span>
309 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'[1 2 3 4] 2 take'</span><span class="p">)</span> <span class="c1"># reverses the order</span>
312 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">[</span><span class="mi">2</span> <span class="mi">1</span><span class="p">]</span>
315 <p><code class="docutils literal notranslate"><span class="pre">reverse</span></code> could be defines as <code class="docutils literal notranslate"><span class="pre">reverse</span> <span class="pre">==</span> <span class="pre">dup</span> <span class="pre">size</span> <span class="pre">take</span></code></p>
317 <div class="section" id="remove">
318 <h3><code class="docutils literal notranslate"><span class="pre">remove</span></code><a class="headerlink" href="#remove" title="Permalink to this headline">¶</a></h3>
319 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'[1 2 3 1 4] 1 remove'</span><span class="p">)</span>
322 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">[</span><span class="mi">2</span> <span class="mi">3</span> <span class="mi">1</span> <span class="mi">4</span><span class="p">]</span>
326 <div class="section" id="reverse">
327 <h3><code class="docutils literal notranslate"><span class="pre">reverse</span></code><a class="headerlink" href="#reverse" title="Permalink to this headline">¶</a></h3>
328 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'[1 2 3 4] reverse'</span><span class="p">)</span>
331 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">[</span><span class="mi">4</span> <span class="mi">3</span> <span class="mi">2</span> <span class="mi">1</span><span class="p">]</span>
335 <div class="section" id="size">
336 <h3><code class="docutils literal notranslate"><span class="pre">size</span></code><a class="headerlink" href="#size" title="Permalink to this headline">¶</a></h3>
337 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'[1 1 1 1] size'</span><span class="p">)</span>
340 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">4</span>
344 <div class="section" id="swaack">
345 <h3><code class="docutils literal notranslate"><span class="pre">swaack</span></code><a class="headerlink" href="#swaack" title="Permalink to this headline">¶</a></h3>
346 <p>“Swap stack” swap the list on the top of the stack for the stack, and
347 put the old stack on top of the new one. Think of it as a context
348 switch. Niether of the lists/stacks change their order.</p>
349 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'1 2 3 [4 5 6] swaack'</span><span class="p">)</span>
352 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">6</span> <span class="mi">5</span> <span class="mi">4</span> <span class="p">[</span><span class="mi">3</span> <span class="mi">2</span> <span class="mi">1</span><span class="p">]</span>
356 <div class="section" id="choice-select">
357 <h3><code class="docutils literal notranslate"><span class="pre">choice</span></code> <code class="docutils literal notranslate"><span class="pre">select</span></code><a class="headerlink" href="#choice-select" title="Permalink to this headline">¶</a></h3>
358 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'23 9 1 choice'</span><span class="p">)</span>
361 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">9</span>
364 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'23 9 0 choice'</span><span class="p">)</span>
367 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">23</span>
370 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'[23 9 7] 1 select'</span><span class="p">)</span> <span class="c1"># select is basically getitem, should retire it?</span>
373 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">9</span>
376 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'[23 9 7] 0 select'</span><span class="p">)</span>
379 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">23</span>
383 <div class="section" id="zip">
384 <h3><code class="docutils literal notranslate"><span class="pre">zip</span></code><a class="headerlink" href="#zip" title="Permalink to this headline">¶</a></h3>
385 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'[1 2 3] [6 5 4] zip'</span><span class="p">)</span>
388 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">[[</span><span class="mi">6</span> <span class="mi">1</span><span class="p">]</span> <span class="p">[</span><span class="mi">5</span> <span class="mi">2</span><span class="p">]</span> <span class="p">[</span><span class="mi">4</span> <span class="mi">3</span><span class="p">]]</span>
391 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'[1 2 3] [6 5 4] zip [sum] map'</span><span class="p">)</span>
394 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">[</span><span class="mi">7</span> <span class="mi">7</span> <span class="mi">7</span><span class="p">]</span>
399 <div class="section" id="math-words">
400 <h2>Math words<a class="headerlink" href="#math-words" title="Permalink to this headline">¶</a></h2>
401 <div class="section" id="add">
402 <h3><code class="docutils literal notranslate"><span class="pre">+</span></code> <code class="docutils literal notranslate"><span class="pre">add</span></code><a class="headerlink" href="#add" title="Permalink to this headline">¶</a></h3>
403 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'23 9 +'</span><span class="p">)</span>
406 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">32</span>
410 <div class="section" id="sub">
411 <h3><code class="docutils literal notranslate"><span class="pre">-</span></code> <code class="docutils literal notranslate"><span class="pre">sub</span></code><a class="headerlink" href="#sub" title="Permalink to this headline">¶</a></h3>
412 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'23 9 -'</span><span class="p">)</span>
415 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">14</span>
419 <div class="section" id="mul">
420 <h3><code class="docutils literal notranslate"><span class="pre">*</span></code> <code class="docutils literal notranslate"><span class="pre">mul</span></code><a class="headerlink" href="#mul" title="Permalink to this headline">¶</a></h3>
421 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'23 9 *'</span><span class="p">)</span>
424 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">207</span>
428 <div class="section" id="div-floordiv-truediv">
429 <h3><code class="docutils literal notranslate"><span class="pre">/</span></code> <code class="docutils literal notranslate"><span class="pre">div</span></code> <code class="docutils literal notranslate"><span class="pre">floordiv</span></code> <code class="docutils literal notranslate"><span class="pre">truediv</span></code><a class="headerlink" href="#div-floordiv-truediv" title="Permalink to this headline">¶</a></h3>
430 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'23 9 /'</span><span class="p">)</span>
433 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mf">2.5555555555555554</span>
436 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'23 -9 truediv'</span><span class="p">)</span>
439 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">-</span><span class="mf">2.5555555555555554</span>
442 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'23 9 div'</span><span class="p">)</span>
445 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">2</span>
448 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'23 9 floordiv'</span><span class="p">)</span>
451 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">2</span>
454 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'23 -9 div'</span><span class="p">)</span>
457 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">-</span><span class="mi">3</span>
460 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'23 -9 floordiv'</span><span class="p">)</span>
463 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">-</span><span class="mi">3</span>
467 <div class="section" id="mod-modulus-rem-remainder">
468 <h3><code class="docutils literal notranslate"><span class="pre">%</span></code> <code class="docutils literal notranslate"><span class="pre">mod</span></code> <code class="docutils literal notranslate"><span class="pre">modulus</span></code> <code class="docutils literal notranslate"><span class="pre">rem</span></code> <code class="docutils literal notranslate"><span class="pre">remainder</span></code><a class="headerlink" href="#mod-modulus-rem-remainder" title="Permalink to this headline">¶</a></h3>
469 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'23 9 %'</span><span class="p">)</span>
472 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">5</span>
476 <div class="section" id="neg">
477 <h3><code class="docutils literal notranslate"><span class="pre">neg</span></code><a class="headerlink" href="#neg" title="Permalink to this headline">¶</a></h3>
478 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'23 neg -5 neg'</span><span class="p">)</span>
481 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">-</span><span class="mi">23</span> <span class="mi">5</span>
485 <div class="section" id="pow">
486 <h3><code class="docutils literal notranslate"><span class="pre">pow</span></code><a class="headerlink" href="#pow" title="Permalink to this headline">¶</a></h3>
487 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'2 10 pow'</span><span class="p">)</span>
490 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">1024</span>
494 <div class="section" id="sqr-sqrt">
495 <h3><code class="docutils literal notranslate"><span class="pre">sqr</span></code> <code class="docutils literal notranslate"><span class="pre">sqrt</span></code><a class="headerlink" href="#sqr-sqrt" title="Permalink to this headline">¶</a></h3>
496 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'23 sqr'</span><span class="p">)</span>
499 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">529</span>
502 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'23 sqrt'</span><span class="p">)</span>
505 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mf">4.795831523312719</span>
509 <div class="section" id="succ-pred">
510 <h3><code class="docutils literal notranslate"><span class="pre">++</span></code> <code class="docutils literal notranslate"><span class="pre">succ</span></code> <code class="docutils literal notranslate"><span class="pre">--</span></code> <code class="docutils literal notranslate"><span class="pre">pred</span></code><a class="headerlink" href="#succ-pred" title="Permalink to this headline">¶</a></h3>
511 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'1 ++'</span><span class="p">)</span>
514 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">2</span>
517 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'1 --'</span><span class="p">)</span>
520 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">0</span>
524 <div class="section" id="lshift-rshift">
525 <h3><code class="docutils literal notranslate"><span class="pre"><<</span></code> <code class="docutils literal notranslate"><span class="pre">lshift</span></code> <code class="docutils literal notranslate"><span class="pre">>></span></code> <code class="docutils literal notranslate"><span class="pre">rshift</span></code><a class="headerlink" href="#lshift-rshift" title="Permalink to this headline">¶</a></h3>
526 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'8 1 <<'</span><span class="p">)</span>
529 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">16</span>
532 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'8 1 >>'</span><span class="p">)</span>
535 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">4</span>
539 <div class="section" id="average">
540 <h3><code class="docutils literal notranslate"><span class="pre">average</span></code><a class="headerlink" href="#average" title="Permalink to this headline">¶</a></h3>
541 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'[1 2 3 5] average'</span><span class="p">)</span>
544 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mf">2.75</span>
548 <div class="section" id="range-range-to-zero-down-to-zero">
549 <h3><code class="docutils literal notranslate"><span class="pre">range</span></code> <code class="docutils literal notranslate"><span class="pre">range_to_zero</span></code> <code class="docutils literal notranslate"><span class="pre">down_to_zero</span></code><a class="headerlink" href="#range-range-to-zero-down-to-zero" title="Permalink to this headline">¶</a></h3>
550 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'5 range'</span><span class="p">)</span>
553 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">[</span><span class="mi">4</span> <span class="mi">3</span> <span class="mi">2</span> <span class="mi">1</span> <span class="mi">0</span><span class="p">]</span>
556 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'5 range_to_zero'</span><span class="p">)</span>
559 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">[</span><span class="mi">0</span> <span class="mi">1</span> <span class="mi">2</span> <span class="mi">3</span> <span class="mi">4</span> <span class="mi">5</span><span class="p">]</span>
562 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'5 down_to_zero'</span><span class="p">)</span>
565 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">5</span> <span class="mi">4</span> <span class="mi">3</span> <span class="mi">2</span> <span class="mi">1</span> <span class="mi">0</span>
569 <div class="section" id="product">
570 <h3><code class="docutils literal notranslate"><span class="pre">product</span></code><a class="headerlink" href="#product" title="Permalink to this headline">¶</a></h3>
571 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'[1 2 3 5] product'</span><span class="p">)</span>
574 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">30</span>
578 <div class="section" id="sum">
579 <h3><code class="docutils literal notranslate"><span class="pre">sum</span></code><a class="headerlink" href="#sum" title="Permalink to this headline">¶</a></h3>
580 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'[1 2 3 5] sum'</span><span class="p">)</span>
583 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">11</span>
587 <div class="section" id="min">
588 <h3><code class="docutils literal notranslate"><span class="pre">min</span></code><a class="headerlink" href="#min" title="Permalink to this headline">¶</a></h3>
589 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'[1 2 3 5] min'</span><span class="p">)</span>
592 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">1</span>
596 <div class="section" id="gcd">
597 <h3><code class="docutils literal notranslate"><span class="pre">gcd</span></code><a class="headerlink" href="#gcd" title="Permalink to this headline">¶</a></h3>
598 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'45 30 gcd'</span><span class="p">)</span>
601 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">15</span>
605 <div class="section" id="least-fraction">
606 <h3><code class="docutils literal notranslate"><span class="pre">least_fraction</span></code><a class="headerlink" href="#least-fraction" title="Permalink to this headline">¶</a></h3>
607 <p>If we represent fractions as a quoted pair of integers [q d] this word
608 reduces them to their … least common factors or whatever.</p>
609 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'[45 30] least_fraction'</span><span class="p">)</span>
612 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">[</span><span class="mi">3</span> <span class="mi">2</span><span class="p">]</span>
615 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'[23 12] least_fraction'</span><span class="p">)</span>
618 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">[</span><span class="mi">23</span> <span class="mi">12</span><span class="p">]</span>
623 <div class="section" id="logic-and-comparison">
624 <h2>Logic and Comparison<a class="headerlink" href="#logic-and-comparison" title="Permalink to this headline">¶</a></h2>
625 <div class="section" id="truthy">
626 <h3><code class="docutils literal notranslate"><span class="pre">?</span></code> <code class="docutils literal notranslate"><span class="pre">truthy</span></code><a class="headerlink" href="#truthy" title="Permalink to this headline">¶</a></h3>
627 <p>Get the Boolean value of the item on the top of the stack.</p>
628 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'23 truthy'</span><span class="p">)</span>
631 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kc">True</span>
634 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'[] truthy'</span><span class="p">)</span> <span class="c1"># Python semantics.</span>
637 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kc">False</span>
640 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'0 truthy'</span><span class="p">)</span>
643 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kc">False</span>
646 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span>? == dup truthy
649 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">V</span><span class="p">(</span><span class="s1">'23 ?'</span><span class="p">)</span>
652 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span> . 23 ?
659 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'[] ?'</span><span class="p">)</span>
662 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">[]</span> <span class="kc">False</span>
665 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'0 ?'</span><span class="p">)</span>
668 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">0</span> <span class="kc">False</span>
672 <div class="section" id="and">
673 <h3><code class="docutils literal notranslate"><span class="pre">&</span></code> <code class="docutils literal notranslate"><span class="pre">and</span></code><a class="headerlink" href="#and" title="Permalink to this headline">¶</a></h3>
674 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'23 9 &'</span><span class="p">)</span>
677 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">1</span>
681 <div class="section" id="ne">
682 <h3><code class="docutils literal notranslate"><span class="pre">!=</span></code> <code class="docutils literal notranslate"><span class="pre"><></span></code> <code class="docutils literal notranslate"><span class="pre">ne</span></code><a class="headerlink" href="#ne" title="Permalink to this headline">¶</a></h3>
683 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'23 9 !='</span><span class="p">)</span>
686 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kc">True</span>
689 <div class="line-block">
690 <div class="line">The usual suspects: - <code class="docutils literal notranslate"><span class="pre"><</span></code> <code class="docutils literal notranslate"><span class="pre">lt</span></code> - <code class="docutils literal notranslate"><span class="pre"><=</span></code> <code class="docutils literal notranslate"><span class="pre">le</span></code></div>
691 <div class="line">- <code class="docutils literal notranslate"><span class="pre">=</span></code> <code class="docutils literal notranslate"><span class="pre">eq</span></code> - <code class="docutils literal notranslate"><span class="pre">></span></code> <code class="docutils literal notranslate"><span class="pre">gt</span></code> - <code class="docutils literal notranslate"><span class="pre">>=</span></code> <code class="docutils literal notranslate"><span class="pre">ge</span></code> - <code class="docutils literal notranslate"><span class="pre">not</span></code> - <code class="docutils literal notranslate"><span class="pre">or</span></code></div>
694 <div class="section" id="xor">
695 <h3><code class="docutils literal notranslate"><span class="pre">^</span></code> <code class="docutils literal notranslate"><span class="pre">xor</span></code><a class="headerlink" href="#xor" title="Permalink to this headline">¶</a></h3>
696 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'1 1 ^'</span><span class="p">)</span>
699 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">0</span>
702 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'1 0 ^'</span><span class="p">)</span>
705 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">1</span>
710 <div class="section" id="miscellaneous">
711 <h2>Miscellaneous<a class="headerlink" href="#miscellaneous" title="Permalink to this headline">¶</a></h2>
712 <div class="section" id="help">
713 <h3><code class="docutils literal notranslate"><span class="pre">help</span></code><a class="headerlink" href="#help" title="Permalink to this headline">¶</a></h3>
714 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'[help] help'</span><span class="p">)</span>
717 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">Accepts</span> <span class="n">a</span> <span class="n">quoted</span> <span class="n">symbol</span> <span class="n">on</span> <span class="n">the</span> <span class="n">top</span> <span class="n">of</span> <span class="n">the</span> <span class="n">stack</span> <span class="ow">and</span> <span class="n">prints</span> <span class="n">its</span> <span class="n">docs</span><span class="o">.</span>
721 <div class="section" id="parse">
722 <h3><code class="docutils literal notranslate"><span class="pre">parse</span></code><a class="headerlink" href="#parse" title="Permalink to this headline">¶</a></h3>
723 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'[parse] help'</span><span class="p">)</span>
726 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">Parse</span> <span class="n">the</span> <span class="n">string</span> <span class="n">on</span> <span class="n">the</span> <span class="n">stack</span> <span class="n">to</span> <span class="n">a</span> <span class="n">Joy</span> <span class="n">expression</span><span class="o">.</span>
729 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'1 "2 [3] dup" parse'</span><span class="p">)</span>
732 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">1</span> <span class="p">[</span><span class="mi">2</span> <span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="n">dup</span><span class="p">]</span>
736 <div class="section" id="run">
737 <h3><code class="docutils literal notranslate"><span class="pre">run</span></code><a class="headerlink" href="#run" title="Permalink to this headline">¶</a></h3>
738 <p>Evaluate a quoted Joy sequence.</p>
739 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'[1 2 dup + +] run'</span><span class="p">)</span>
742 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">[</span><span class="mi">5</span><span class="p">]</span>
747 <div class="section" id="combinators">
748 <h2>Combinators<a class="headerlink" href="#combinators" title="Permalink to this headline">¶</a></h2>
749 <div class="section" id="app1-app2-app3">
750 <h3><code class="docutils literal notranslate"><span class="pre">app1</span></code> <code class="docutils literal notranslate"><span class="pre">app2</span></code> <code class="docutils literal notranslate"><span class="pre">app3</span></code><a class="headerlink" href="#app1-app2-app3" title="Permalink to this headline">¶</a></h3>
751 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'[app1] help'</span><span class="p">)</span>
754 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">Given</span> <span class="n">a</span> <span class="n">quoted</span> <span class="n">program</span> <span class="n">on</span> <span class="n">TOS</span> <span class="ow">and</span> <span class="n">anything</span> <span class="k">as</span> <span class="n">the</span> <span class="n">second</span> <span class="n">stack</span> <span class="n">item</span> <span class="n">run</span>
755 <span class="n">the</span> <span class="n">program</span> <span class="ow">and</span> <span class="n">replace</span> <span class="n">the</span> <span class="n">two</span> <span class="n">args</span> <span class="k">with</span> <span class="n">the</span> <span class="n">first</span> <span class="n">result</span> <span class="n">of</span> <span class="n">the</span>
756 <span class="n">program</span><span class="o">.</span>
758 <span class="o">...</span> <span class="n">x</span> <span class="p">[</span><span class="n">Q</span><span class="p">]</span> <span class="o">.</span> <span class="n">app1</span>
759 <span class="o">-----------------------------------</span>
760 <span class="o">...</span> <span class="p">[</span><span class="n">x</span> <span class="o">...</span><span class="p">]</span> <span class="p">[</span><span class="n">Q</span><span class="p">]</span> <span class="o">.</span> <span class="n">infra</span> <span class="n">first</span>
763 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'10 4 [sqr *] app1'</span><span class="p">)</span>
766 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">10</span> <span class="mi">160</span>
769 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'10 3 4 [sqr *] app2'</span><span class="p">)</span>
772 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">10</span> <span class="mi">90</span> <span class="mi">160</span>
775 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'[app2] help'</span><span class="p">)</span>
778 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">Like</span> <span class="n">app1</span> <span class="k">with</span> <span class="n">two</span> <span class="n">items</span><span class="o">.</span>
780 <span class="o">...</span> <span class="n">y</span> <span class="n">x</span> <span class="p">[</span><span class="n">Q</span><span class="p">]</span> <span class="o">.</span> <span class="n">app2</span>
781 <span class="o">-----------------------------------</span>
782 <span class="o">...</span> <span class="p">[</span><span class="n">y</span> <span class="o">...</span><span class="p">]</span> <span class="p">[</span><span class="n">Q</span><span class="p">]</span> <span class="o">.</span> <span class="n">infra</span> <span class="n">first</span>
783 <span class="p">[</span><span class="n">x</span> <span class="o">...</span><span class="p">]</span> <span class="p">[</span><span class="n">Q</span><span class="p">]</span> <span class="n">infra</span> <span class="n">first</span>
786 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'10 2 3 4 [sqr *] app3'</span><span class="p">)</span>
789 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">10</span> <span class="mi">40</span> <span class="mi">90</span> <span class="mi">160</span>
793 <div class="section" id="anamorphism">
794 <h3><code class="docutils literal notranslate"><span class="pre">anamorphism</span></code><a class="headerlink" href="#anamorphism" title="Permalink to this headline">¶</a></h3>
795 <p>Given an initial value, a predicate function <code class="docutils literal notranslate"><span class="pre">[P]</span></code>, and a generator
796 function <code class="docutils literal notranslate"><span class="pre">[G]</span></code>, the <code class="docutils literal notranslate"><span class="pre">anamorphism</span></code> combinator creates a sequence.</p>
797 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span> <span class="n">n</span> <span class="p">[</span><span class="n">P</span><span class="p">]</span> <span class="p">[</span><span class="n">G</span><span class="p">]</span> <span class="n">anamorphism</span>
798 <span class="o">---------------------------</span>
799 <span class="p">[</span><span class="o">...</span><span class="p">]</span>
802 <p>Example, <code class="docutils literal notranslate"><span class="pre">range</span></code>:</p>
803 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="nb">range</span> <span class="o">==</span> <span class="p">[</span><span class="mi">0</span> <span class="o"><=</span><span class="p">]</span> <span class="p">[</span><span class="mi">1</span> <span class="o">-</span> <span class="n">dup</span><span class="p">]</span> <span class="n">anamorphism</span>
806 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'3 [0 <=] [1 - dup] anamorphism'</span><span class="p">)</span>
809 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">[</span><span class="mi">2</span> <span class="mi">1</span> <span class="mi">0</span><span class="p">]</span>
813 <div class="section" id="branch">
814 <h3><code class="docutils literal notranslate"><span class="pre">branch</span></code><a class="headerlink" href="#branch" title="Permalink to this headline">¶</a></h3>
815 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'3 4 1 [+] [*] branch'</span><span class="p">)</span>
818 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">12</span>
821 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'3 4 0 [+] [*] branch'</span><span class="p">)</span>
824 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">7</span>
828 <div class="section" id="cleave">
829 <h3><code class="docutils literal notranslate"><span class="pre">cleave</span></code><a class="headerlink" href="#cleave" title="Permalink to this headline">¶</a></h3>
830 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">...</span> <span class="n">x</span> <span class="p">[</span><span class="n">P</span><span class="p">]</span> <span class="p">[</span><span class="n">Q</span><span class="p">]</span> <span class="n">cleave</span>
833 <p>From the original Joy docs: “The cleave combinator expects two
834 quotations, and below that an item <code class="docutils literal notranslate"><span class="pre">x</span></code> It first executes <code class="docutils literal notranslate"><span class="pre">[P]</span></code>, with
835 <code class="docutils literal notranslate"><span class="pre">x</span></code> on top, and saves the top result element. Then it executes
836 <code class="docutils literal notranslate"><span class="pre">[Q]</span></code>, again with <code class="docutils literal notranslate"><span class="pre">x</span></code>, and saves the top result. Finally it restores
837 the stack to what it was below <code class="docutils literal notranslate"><span class="pre">x</span></code> and pushes the two results P(X) and
839 <p>Note that <code class="docutils literal notranslate"><span class="pre">P</span></code> and <code class="docutils literal notranslate"><span class="pre">Q</span></code> can use items from the stack freely, since the
840 stack (below <code class="docutils literal notranslate"><span class="pre">x</span></code>) is restored. <code class="docutils literal notranslate"><span class="pre">cleave</span></code> is a kind of <em>parallel</em>
841 primitive, and it would make sense to create a version that uses, e.g.
842 Python threads or something, to actually run <code class="docutils literal notranslate"><span class="pre">P</span></code> and <code class="docutils literal notranslate"><span class="pre">Q</span></code>
843 concurrently. The current implementation of <code class="docutils literal notranslate"><span class="pre">cleave</span></code> is a definition
844 in terms of <code class="docutils literal notranslate"><span class="pre">app2</span></code>:</p>
845 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">cleave</span> <span class="o">==</span> <span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="n">app2</span> <span class="p">[</span><span class="n">popd</span><span class="p">]</span> <span class="n">dip</span>
848 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'10 2 [+] [-] cleave'</span><span class="p">)</span>
851 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">10</span> <span class="mi">12</span> <span class="mi">8</span>
855 <div class="section" id="dip-dipd-dipdd">
856 <h3><code class="docutils literal notranslate"><span class="pre">dip</span></code> <code class="docutils literal notranslate"><span class="pre">dipd</span></code> <code class="docutils literal notranslate"><span class="pre">dipdd</span></code><a class="headerlink" href="#dip-dipd-dipdd" title="Permalink to this headline">¶</a></h3>
857 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'1 2 3 4 5 [+] dip'</span><span class="p">)</span>
860 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">1</span> <span class="mi">2</span> <span class="mi">7</span> <span class="mi">5</span>
863 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'1 2 3 4 5 [+] dipd'</span><span class="p">)</span>
866 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">1</span> <span class="mi">5</span> <span class="mi">4</span> <span class="mi">5</span>
869 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'1 2 3 4 5 [+] dipdd'</span><span class="p">)</span>
872 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">3</span> <span class="mi">3</span> <span class="mi">4</span> <span class="mi">5</span>
876 <div class="section" id="dupdip">
877 <h3><code class="docutils literal notranslate"><span class="pre">dupdip</span></code><a class="headerlink" href="#dupdip" title="Permalink to this headline">¶</a></h3>
878 <p>Expects a quoted program <code class="docutils literal notranslate"><span class="pre">[Q]</span></code> on the stack and some item under it,
879 <code class="docutils literal notranslate"><span class="pre">dup</span></code> the item and <code class="docutils literal notranslate"><span class="pre">dip</span></code> the quoted program under it.</p>
880 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">n</span> <span class="p">[</span><span class="n">Q</span><span class="p">]</span> <span class="n">dupdip</span> <span class="o">==</span> <span class="n">n</span> <span class="n">Q</span> <span class="n">n</span>
883 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">V</span><span class="p">(</span><span class="s1">'23 [++] dupdip *'</span><span class="p">)</span> <span class="c1"># N(N + 1)</span>
886 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span> <span class="o">.</span> <span class="mi">23</span> <span class="p">[</span><span class="o">++</span><span class="p">]</span> <span class="n">dupdip</span> <span class="o">*</span>
887 <span class="mi">23</span> <span class="o">.</span> <span class="p">[</span><span class="o">++</span><span class="p">]</span> <span class="n">dupdip</span> <span class="o">*</span>
888 <span class="mi">23</span> <span class="p">[</span><span class="o">++</span><span class="p">]</span> <span class="o">.</span> <span class="n">dupdip</span> <span class="o">*</span>
889 <span class="mi">23</span> <span class="o">.</span> <span class="o">++</span> <span class="mi">23</span> <span class="o">*</span>
890 <span class="mi">24</span> <span class="o">.</span> <span class="mi">23</span> <span class="o">*</span>
891 <span class="mi">24</span> <span class="mi">23</span> <span class="o">.</span> <span class="o">*</span>
892 <span class="mi">552</span> <span class="o">.</span>
896 <div class="section" id="genrec-primrec">
897 <h3><code class="docutils literal notranslate"><span class="pre">genrec</span></code> <code class="docutils literal notranslate"><span class="pre">primrec</span></code><a class="headerlink" href="#genrec-primrec" title="Permalink to this headline">¶</a></h3>
898 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'[genrec] help'</span><span class="p">)</span>
901 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">General</span> <span class="n">Recursion</span> <span class="n">Combinator</span><span class="o">.</span>
903 <span class="p">[</span><span class="k">if</span><span class="p">]</span> <span class="p">[</span><span class="n">then</span><span class="p">]</span> <span class="p">[</span><span class="n">rec1</span><span class="p">]</span> <span class="p">[</span><span class="n">rec2</span><span class="p">]</span> <span class="n">genrec</span>
904 <span class="o">---------------------------------------------------------------------</span>
905 <span class="p">[</span><span class="k">if</span><span class="p">]</span> <span class="p">[</span><span class="n">then</span><span class="p">]</span> <span class="p">[</span><span class="n">rec1</span> <span class="p">[[</span><span class="k">if</span><span class="p">]</span> <span class="p">[</span><span class="n">then</span><span class="p">]</span> <span class="p">[</span><span class="n">rec1</span><span class="p">]</span> <span class="p">[</span><span class="n">rec2</span><span class="p">]</span> <span class="n">genrec</span><span class="p">]</span> <span class="n">rec2</span><span class="p">]</span> <span class="n">ifte</span>
907 <span class="n">From</span> <span class="s2">"Recursion Theory and Joy"</span> <span class="p">(</span><span class="n">j05cmp</span><span class="o">.</span><span class="n">html</span><span class="p">)</span> <span class="n">by</span> <span class="n">Manfred</span> <span class="n">von</span> <span class="n">Thun</span><span class="p">:</span>
908 <span class="s2">"The genrec combinator takes four program parameters in addition to</span>
909 <span class="n">whatever</span> <span class="n">data</span> <span class="n">parameters</span> <span class="n">it</span> <span class="n">needs</span><span class="o">.</span> <span class="n">Fourth</span> <span class="kn">from</span> <span class="nn">the</span> <span class="n">top</span> <span class="ow">is</span> <span class="n">an</span> <span class="k">if</span><span class="o">-</span><span class="n">part</span><span class="p">,</span>
910 <span class="n">followed</span> <span class="n">by</span> <span class="n">a</span> <span class="n">then</span><span class="o">-</span><span class="n">part</span><span class="o">.</span> <span class="n">If</span> <span class="n">the</span> <span class="k">if</span><span class="o">-</span><span class="n">part</span> <span class="n">yields</span> <span class="n">true</span><span class="p">,</span> <span class="n">then</span> <span class="n">the</span> <span class="n">then</span><span class="o">-</span><span class="n">part</span>
911 <span class="ow">is</span> <span class="n">executed</span> <span class="ow">and</span> <span class="n">the</span> <span class="n">combinator</span> <span class="n">terminates</span><span class="o">.</span> <span class="n">The</span> <span class="n">other</span> <span class="n">two</span> <span class="n">parameters</span> <span class="n">are</span>
912 <span class="n">the</span> <span class="n">rec1</span><span class="o">-</span><span class="n">part</span> <span class="ow">and</span> <span class="n">the</span> <span class="n">rec2</span><span class="o">-</span><span class="n">part</span><span class="o">.</span> <span class="n">If</span> <span class="n">the</span> <span class="k">if</span><span class="o">-</span><span class="n">part</span> <span class="n">yields</span> <span class="n">false</span><span class="p">,</span> <span class="n">the</span>
913 <span class="n">rec1</span><span class="o">-</span><span class="n">part</span> <span class="ow">is</span> <span class="n">executed</span><span class="o">.</span> <span class="n">Following</span> <span class="n">that</span> <span class="n">the</span> <span class="n">four</span> <span class="n">program</span> <span class="n">parameters</span> <span class="ow">and</span>
914 <span class="n">the</span> <span class="n">combinator</span> <span class="n">are</span> <span class="n">again</span> <span class="n">pushed</span> <span class="n">onto</span> <span class="n">the</span> <span class="n">stack</span> <span class="n">bundled</span> <span class="n">up</span> <span class="ow">in</span> <span class="n">a</span> <span class="n">quoted</span>
915 <span class="n">form</span><span class="o">.</span> <span class="n">Then</span> <span class="n">the</span> <span class="n">rec2</span><span class="o">-</span><span class="n">part</span> <span class="ow">is</span> <span class="n">executed</span><span class="p">,</span> <span class="n">where</span> <span class="n">it</span> <span class="n">will</span> <span class="n">find</span> <span class="n">the</span> <span class="n">bundled</span>
916 <span class="n">form</span><span class="o">.</span> <span class="n">Typically</span> <span class="n">it</span> <span class="n">will</span> <span class="n">then</span> <span class="n">execute</span> <span class="n">the</span> <span class="n">bundled</span> <span class="n">form</span><span class="p">,</span> <span class="n">either</span> <span class="k">with</span> <span class="n">i</span> <span class="ow">or</span>
917 <span class="k">with</span> <span class="n">app2</span><span class="p">,</span> <span class="ow">or</span> <span class="n">some</span> <span class="n">other</span> <span class="n">combinator</span><span class="o">.</span><span class="s2">"</span>
919 <span class="n">The</span> <span class="n">way</span> <span class="n">to</span> <span class="n">design</span> <span class="n">one</span> <span class="n">of</span> <span class="n">these</span> <span class="ow">is</span> <span class="n">to</span> <span class="n">fix</span> <span class="n">your</span> <span class="n">base</span> <span class="n">case</span> <span class="p">[</span><span class="n">then</span><span class="p">]</span> <span class="ow">and</span> <span class="n">the</span>
920 <span class="n">test</span> <span class="p">[</span><span class="k">if</span><span class="p">],</span> <span class="ow">and</span> <span class="n">then</span> <span class="n">treat</span> <span class="n">rec1</span> <span class="ow">and</span> <span class="n">rec2</span> <span class="k">as</span> <span class="n">an</span> <span class="k">else</span><span class="o">-</span><span class="n">part</span> <span class="s2">"sandwiching"</span>
921 <span class="n">a</span> <span class="n">quotation</span> <span class="n">of</span> <span class="n">the</span> <span class="n">whole</span> <span class="n">function</span><span class="o">.</span>
923 <span class="n">For</span> <span class="n">example</span><span class="p">,</span> <span class="n">given</span> <span class="n">a</span> <span class="p">(</span><span class="n">general</span> <span class="n">recursive</span><span class="p">)</span> <span class="n">function</span> <span class="s1">'F'</span><span class="p">:</span>
925 <span class="n">F</span> <span class="o">==</span> <span class="p">[</span><span class="n">I</span><span class="p">]</span> <span class="p">[</span><span class="n">T</span><span class="p">]</span> <span class="p">[</span><span class="n">R1</span><span class="p">]</span> <span class="p">[</span><span class="n">R2</span><span class="p">]</span> <span class="n">genrec</span>
927 <span class="n">If</span> <span class="n">the</span> <span class="p">[</span><span class="n">I</span><span class="p">]</span> <span class="k">if</span><span class="o">-</span><span class="n">part</span> <span class="n">fails</span> <span class="n">you</span> <span class="n">must</span> <span class="n">derive</span> <span class="n">R1</span> <span class="ow">and</span> <span class="n">R2</span> <span class="n">from</span><span class="p">:</span>
929 <span class="o">...</span> <span class="n">R1</span> <span class="p">[</span><span class="n">F</span><span class="p">]</span> <span class="n">R2</span>
931 <span class="n">Just</span> <span class="nb">set</span> <span class="n">the</span> <span class="n">stack</span> <span class="n">arguments</span> <span class="ow">in</span> <span class="n">front</span><span class="p">,</span> <span class="ow">and</span> <span class="n">figure</span> <span class="n">out</span> <span class="n">what</span> <span class="n">R1</span> <span class="ow">and</span> <span class="n">R2</span>
932 <span class="n">have</span> <span class="n">to</span> <span class="n">do</span> <span class="n">to</span> <span class="n">apply</span> <span class="n">the</span> <span class="n">quoted</span> <span class="p">[</span><span class="n">F</span><span class="p">]</span> <span class="ow">in</span> <span class="n">the</span> <span class="n">proper</span> <span class="n">way</span><span class="o">.</span> <span class="n">In</span> <span class="n">effect</span><span class="p">,</span> <span class="n">the</span>
933 <span class="n">genrec</span> <span class="n">combinator</span> <span class="n">turns</span> <span class="n">into</span> <span class="n">an</span> <span class="n">ifte</span> <span class="n">combinator</span> <span class="k">with</span> <span class="n">a</span> <span class="n">quoted</span> <span class="n">copy</span> <span class="n">of</span>
934 <span class="n">the</span> <span class="n">original</span> <span class="n">definition</span> <span class="ow">in</span> <span class="n">the</span> <span class="k">else</span><span class="o">-</span><span class="n">part</span><span class="p">:</span>
936 <span class="n">F</span> <span class="o">==</span> <span class="p">[</span><span class="n">I</span><span class="p">]</span> <span class="p">[</span><span class="n">T</span><span class="p">]</span> <span class="p">[</span><span class="n">R1</span><span class="p">]</span> <span class="p">[</span><span class="n">R2</span><span class="p">]</span> <span class="n">genrec</span>
937 <span class="o">==</span> <span class="p">[</span><span class="n">I</span><span class="p">]</span> <span class="p">[</span><span class="n">T</span><span class="p">]</span> <span class="p">[</span><span class="n">R1</span> <span class="p">[</span><span class="n">F</span><span class="p">]</span> <span class="n">R2</span><span class="p">]</span> <span class="n">ifte</span>
939 <span class="p">(</span><span class="n">Primitive</span> <span class="n">recursive</span> <span class="n">functions</span> <span class="n">are</span> <span class="n">those</span> <span class="n">where</span> <span class="n">R2</span> <span class="o">==</span> <span class="n">i</span><span class="o">.</span>
941 <span class="n">P</span> <span class="o">==</span> <span class="p">[</span><span class="n">I</span><span class="p">]</span> <span class="p">[</span><span class="n">T</span><span class="p">]</span> <span class="p">[</span><span class="n">R</span><span class="p">]</span> <span class="n">primrec</span>
942 <span class="o">==</span> <span class="p">[</span><span class="n">I</span><span class="p">]</span> <span class="p">[</span><span class="n">T</span><span class="p">]</span> <span class="p">[</span><span class="n">R</span> <span class="p">[</span><span class="n">P</span><span class="p">]</span> <span class="n">i</span><span class="p">]</span> <span class="n">ifte</span>
943 <span class="o">==</span> <span class="p">[</span><span class="n">I</span><span class="p">]</span> <span class="p">[</span><span class="n">T</span><span class="p">]</span> <span class="p">[</span><span class="n">R</span> <span class="n">P</span><span class="p">]</span> <span class="n">ifte</span>
944 <span class="p">)</span>
947 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'3 [1 <=] [] [dup --] [i *] genrec'</span><span class="p">)</span>
950 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">6</span>
954 <div class="section" id="i">
955 <h3><code class="docutils literal notranslate"><span class="pre">i</span></code><a class="headerlink" href="#i" title="Permalink to this headline">¶</a></h3>
956 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">V</span><span class="p">(</span><span class="s1">'1 2 3 [+ +] i'</span><span class="p">)</span>
959 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span> <span class="o">.</span> <span class="mi">1</span> <span class="mi">2</span> <span class="mi">3</span> <span class="p">[</span><span class="o">+</span> <span class="o">+</span><span class="p">]</span> <span class="n">i</span>
960 <span class="mi">1</span> <span class="o">.</span> <span class="mi">2</span> <span class="mi">3</span> <span class="p">[</span><span class="o">+</span> <span class="o">+</span><span class="p">]</span> <span class="n">i</span>
961 <span class="mi">1</span> <span class="mi">2</span> <span class="o">.</span> <span class="mi">3</span> <span class="p">[</span><span class="o">+</span> <span class="o">+</span><span class="p">]</span> <span class="n">i</span>
962 <span class="mi">1</span> <span class="mi">2</span> <span class="mi">3</span> <span class="o">.</span> <span class="p">[</span><span class="o">+</span> <span class="o">+</span><span class="p">]</span> <span class="n">i</span>
963 <span class="mi">1</span> <span class="mi">2</span> <span class="mi">3</span> <span class="p">[</span><span class="o">+</span> <span class="o">+</span><span class="p">]</span> <span class="o">.</span> <span class="n">i</span>
964 <span class="mi">1</span> <span class="mi">2</span> <span class="mi">3</span> <span class="o">.</span> <span class="o">+</span> <span class="o">+</span>
965 <span class="mi">1</span> <span class="mi">5</span> <span class="o">.</span> <span class="o">+</span>
966 <span class="mi">6</span> <span class="o">.</span>
970 <div class="section" id="ifte">
971 <h3><code class="docutils literal notranslate"><span class="pre">ifte</span></code><a class="headerlink" href="#ifte" title="Permalink to this headline">¶</a></h3>
972 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">[</span><span class="n">predicate</span><span class="p">]</span> <span class="p">[</span><span class="n">then</span><span class="p">]</span> <span class="p">[</span><span class="k">else</span><span class="p">]</span> <span class="n">ifte</span>
975 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'1 2 [1] [+] [*] ifte'</span><span class="p">)</span>
978 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">3</span>
981 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'1 2 [0] [+] [*] ifte'</span><span class="p">)</span>
984 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">2</span>
988 <div class="section" id="infra">
989 <h3><code class="docutils literal notranslate"><span class="pre">infra</span></code><a class="headerlink" href="#infra" title="Permalink to this headline">¶</a></h3>
990 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">V</span><span class="p">(</span><span class="s1">'1 2 3 [4 5 6] [* +] infra'</span><span class="p">)</span>
993 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span> <span class="o">.</span> <span class="mi">1</span> <span class="mi">2</span> <span class="mi">3</span> <span class="p">[</span><span class="mi">4</span> <span class="mi">5</span> <span class="mi">6</span><span class="p">]</span> <span class="p">[</span><span class="o">*</span> <span class="o">+</span><span class="p">]</span> <span class="n">infra</span>
994 <span class="mi">1</span> <span class="o">.</span> <span class="mi">2</span> <span class="mi">3</span> <span class="p">[</span><span class="mi">4</span> <span class="mi">5</span> <span class="mi">6</span><span class="p">]</span> <span class="p">[</span><span class="o">*</span> <span class="o">+</span><span class="p">]</span> <span class="n">infra</span>
995 <span class="mi">1</span> <span class="mi">2</span> <span class="o">.</span> <span class="mi">3</span> <span class="p">[</span><span class="mi">4</span> <span class="mi">5</span> <span class="mi">6</span><span class="p">]</span> <span class="p">[</span><span class="o">*</span> <span class="o">+</span><span class="p">]</span> <span class="n">infra</span>
996 <span class="mi">1</span> <span class="mi">2</span> <span class="mi">3</span> <span class="o">.</span> <span class="p">[</span><span class="mi">4</span> <span class="mi">5</span> <span class="mi">6</span><span class="p">]</span> <span class="p">[</span><span class="o">*</span> <span class="o">+</span><span class="p">]</span> <span class="n">infra</span>
997 <span class="mi">1</span> <span class="mi">2</span> <span class="mi">3</span> <span class="p">[</span><span class="mi">4</span> <span class="mi">5</span> <span class="mi">6</span><span class="p">]</span> <span class="o">.</span> <span class="p">[</span><span class="o">*</span> <span class="o">+</span><span class="p">]</span> <span class="n">infra</span>
998 <span class="mi">1</span> <span class="mi">2</span> <span class="mi">3</span> <span class="p">[</span><span class="mi">4</span> <span class="mi">5</span> <span class="mi">6</span><span class="p">]</span> <span class="p">[</span><span class="o">*</span> <span class="o">+</span><span class="p">]</span> <span class="o">.</span> <span class="n">infra</span>
999 <span class="mi">6</span> <span class="mi">5</span> <span class="mi">4</span> <span class="o">.</span> <span class="o">*</span> <span class="o">+</span> <span class="p">[</span><span class="mi">3</span> <span class="mi">2</span> <span class="mi">1</span><span class="p">]</span> <span class="n">swaack</span>
1000 <span class="mi">6</span> <span class="mi">20</span> <span class="o">.</span> <span class="o">+</span> <span class="p">[</span><span class="mi">3</span> <span class="mi">2</span> <span class="mi">1</span><span class="p">]</span> <span class="n">swaack</span>
1001 <span class="mi">26</span> <span class="o">.</span> <span class="p">[</span><span class="mi">3</span> <span class="mi">2</span> <span class="mi">1</span><span class="p">]</span> <span class="n">swaack</span>
1002 <span class="mi">26</span> <span class="p">[</span><span class="mi">3</span> <span class="mi">2</span> <span class="mi">1</span><span class="p">]</span> <span class="o">.</span> <span class="n">swaack</span>
1003 <span class="mi">1</span> <span class="mi">2</span> <span class="mi">3</span> <span class="p">[</span><span class="mi">26</span><span class="p">]</span> <span class="o">.</span>
1007 <div class="section" id="loop">
1008 <h3><code class="docutils literal notranslate"><span class="pre">loop</span></code><a class="headerlink" href="#loop" title="Permalink to this headline">¶</a></h3>
1009 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'[loop] help'</span><span class="p">)</span>
1012 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">Basic</span> <span class="n">loop</span> <span class="n">combinator</span><span class="o">.</span>
1014 <span class="o">...</span> <span class="kc">True</span> <span class="p">[</span><span class="n">Q</span><span class="p">]</span> <span class="n">loop</span>
1015 <span class="o">-----------------------</span>
1016 <span class="o">...</span> <span class="n">Q</span> <span class="p">[</span><span class="n">Q</span><span class="p">]</span> <span class="n">loop</span>
1018 <span class="o">...</span> <span class="kc">False</span> <span class="p">[</span><span class="n">Q</span><span class="p">]</span> <span class="n">loop</span>
1019 <span class="o">------------------------</span>
1020 <span class="o">...</span>
1023 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">V</span><span class="p">(</span><span class="s1">'3 dup [1 - dup] loop'</span><span class="p">)</span>
1026 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span> <span class="o">.</span> <span class="mi">3</span> <span class="n">dup</span> <span class="p">[</span><span class="mi">1</span> <span class="o">-</span> <span class="n">dup</span><span class="p">]</span> <span class="n">loop</span>
1027 <span class="mi">3</span> <span class="o">.</span> <span class="n">dup</span> <span class="p">[</span><span class="mi">1</span> <span class="o">-</span> <span class="n">dup</span><span class="p">]</span> <span class="n">loop</span>
1028 <span class="mi">3</span> <span class="mi">3</span> <span class="o">.</span> <span class="p">[</span><span class="mi">1</span> <span class="o">-</span> <span class="n">dup</span><span class="p">]</span> <span class="n">loop</span>
1029 <span class="mi">3</span> <span class="mi">3</span> <span class="p">[</span><span class="mi">1</span> <span class="o">-</span> <span class="n">dup</span><span class="p">]</span> <span class="o">.</span> <span class="n">loop</span>
1030 <span class="mi">3</span> <span class="o">.</span> <span class="mi">1</span> <span class="o">-</span> <span class="n">dup</span> <span class="p">[</span><span class="mi">1</span> <span class="o">-</span> <span class="n">dup</span><span class="p">]</span> <span class="n">loop</span>
1031 <span class="mi">3</span> <span class="mi">1</span> <span class="o">.</span> <span class="o">-</span> <span class="n">dup</span> <span class="p">[</span><span class="mi">1</span> <span class="o">-</span> <span class="n">dup</span><span class="p">]</span> <span class="n">loop</span>
1032 <span class="mi">2</span> <span class="o">.</span> <span class="n">dup</span> <span class="p">[</span><span class="mi">1</span> <span class="o">-</span> <span class="n">dup</span><span class="p">]</span> <span class="n">loop</span>
1033 <span class="mi">2</span> <span class="mi">2</span> <span class="o">.</span> <span class="p">[</span><span class="mi">1</span> <span class="o">-</span> <span class="n">dup</span><span class="p">]</span> <span class="n">loop</span>
1034 <span class="mi">2</span> <span class="mi">2</span> <span class="p">[</span><span class="mi">1</span> <span class="o">-</span> <span class="n">dup</span><span class="p">]</span> <span class="o">.</span> <span class="n">loop</span>
1035 <span class="mi">2</span> <span class="o">.</span> <span class="mi">1</span> <span class="o">-</span> <span class="n">dup</span> <span class="p">[</span><span class="mi">1</span> <span class="o">-</span> <span class="n">dup</span><span class="p">]</span> <span class="n">loop</span>
1036 <span class="mi">2</span> <span class="mi">1</span> <span class="o">.</span> <span class="o">-</span> <span class="n">dup</span> <span class="p">[</span><span class="mi">1</span> <span class="o">-</span> <span class="n">dup</span><span class="p">]</span> <span class="n">loop</span>
1037 <span class="mi">1</span> <span class="o">.</span> <span class="n">dup</span> <span class="p">[</span><span class="mi">1</span> <span class="o">-</span> <span class="n">dup</span><span class="p">]</span> <span class="n">loop</span>
1038 <span class="mi">1</span> <span class="mi">1</span> <span class="o">.</span> <span class="p">[</span><span class="mi">1</span> <span class="o">-</span> <span class="n">dup</span><span class="p">]</span> <span class="n">loop</span>
1039 <span class="mi">1</span> <span class="mi">1</span> <span class="p">[</span><span class="mi">1</span> <span class="o">-</span> <span class="n">dup</span><span class="p">]</span> <span class="o">.</span> <span class="n">loop</span>
1040 <span class="mi">1</span> <span class="o">.</span> <span class="mi">1</span> <span class="o">-</span> <span class="n">dup</span> <span class="p">[</span><span class="mi">1</span> <span class="o">-</span> <span class="n">dup</span><span class="p">]</span> <span class="n">loop</span>
1041 <span class="mi">1</span> <span class="mi">1</span> <span class="o">.</span> <span class="o">-</span> <span class="n">dup</span> <span class="p">[</span><span class="mi">1</span> <span class="o">-</span> <span class="n">dup</span><span class="p">]</span> <span class="n">loop</span>
1042 <span class="mi">0</span> <span class="o">.</span> <span class="n">dup</span> <span class="p">[</span><span class="mi">1</span> <span class="o">-</span> <span class="n">dup</span><span class="p">]</span> <span class="n">loop</span>
1043 <span class="mi">0</span> <span class="mi">0</span> <span class="o">.</span> <span class="p">[</span><span class="mi">1</span> <span class="o">-</span> <span class="n">dup</span><span class="p">]</span> <span class="n">loop</span>
1044 <span class="mi">0</span> <span class="mi">0</span> <span class="p">[</span><span class="mi">1</span> <span class="o">-</span> <span class="n">dup</span><span class="p">]</span> <span class="o">.</span> <span class="n">loop</span>
1045 <span class="mi">0</span> <span class="o">.</span>
1049 <div class="section" id="map-pam">
1050 <h3><code class="docutils literal notranslate"><span class="pre">map</span></code> <code class="docutils literal notranslate"><span class="pre">pam</span></code><a class="headerlink" href="#map-pam" title="Permalink to this headline">¶</a></h3>
1051 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'10 [1 2 3] [*] map'</span><span class="p">)</span>
1054 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">10</span> <span class="p">[</span><span class="mi">10</span> <span class="mi">20</span> <span class="mi">30</span><span class="p">]</span>
1057 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'10 5 [[*][/][+][-]] pam'</span><span class="p">)</span>
1060 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">10</span> <span class="mi">5</span> <span class="p">[</span><span class="mi">50</span> <span class="mf">2.0</span> <span class="mi">15</span> <span class="mi">5</span><span class="p">]</span>
1064 <div class="section" id="nullary-unary-binary-ternary">
1065 <h3><code class="docutils literal notranslate"><span class="pre">nullary</span></code> <code class="docutils literal notranslate"><span class="pre">unary</span></code> <code class="docutils literal notranslate"><span class="pre">binary</span></code> <code class="docutils literal notranslate"><span class="pre">ternary</span></code><a class="headerlink" href="#nullary-unary-binary-ternary" title="Permalink to this headline">¶</a></h3>
1066 <p>Run a quoted program enforcing
1067 <a class="reference external" href="https://en.wikipedia.org/wiki/Arity">arity</a>.</p>
1068 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'1 2 3 4 5 [+] nullary'</span><span class="p">)</span>
1071 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">1</span> <span class="mi">2</span> <span class="mi">3</span> <span class="mi">4</span> <span class="mi">5</span> <span class="mi">9</span>
1074 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'1 2 3 4 5 [+] unary'</span><span class="p">)</span>
1077 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">1</span> <span class="mi">2</span> <span class="mi">3</span> <span class="mi">4</span> <span class="mi">9</span>
1080 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'1 2 3 4 5 [+] binary'</span><span class="p">)</span> <span class="c1"># + has arity 2 so this is technically pointless...</span>
1083 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">1</span> <span class="mi">2</span> <span class="mi">3</span> <span class="mi">9</span>
1086 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'1 2 3 4 5 [+] ternary'</span><span class="p">)</span>
1089 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">1</span> <span class="mi">2</span> <span class="mi">9</span>
1093 <div class="section" id="step">
1094 <h3><code class="docutils literal notranslate"><span class="pre">step</span></code><a class="headerlink" href="#step" title="Permalink to this headline">¶</a></h3>
1095 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'[step] help'</span><span class="p">)</span>
1098 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">Run</span> <span class="n">a</span> <span class="n">quoted</span> <span class="n">program</span> <span class="n">on</span> <span class="n">each</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">a</span> <span class="n">sequence</span><span class="o">.</span>
1100 <span class="o">...</span> <span class="p">[]</span> <span class="p">[</span><span class="n">Q</span><span class="p">]</span> <span class="o">.</span> <span class="n">step</span>
1101 <span class="o">-----------------------</span>
1102 <span class="o">...</span> <span class="o">.</span>
1105 <span class="o">...</span> <span class="p">[</span><span class="n">a</span><span class="p">]</span> <span class="p">[</span><span class="n">Q</span><span class="p">]</span> <span class="o">.</span> <span class="n">step</span>
1106 <span class="o">------------------------</span>
1107 <span class="o">...</span> <span class="n">a</span> <span class="o">.</span> <span class="n">Q</span>
1110 <span class="o">...</span> <span class="p">[</span><span class="n">a</span> <span class="n">b</span> <span class="n">c</span><span class="p">]</span> <span class="p">[</span><span class="n">Q</span><span class="p">]</span> <span class="o">.</span> <span class="n">step</span>
1111 <span class="o">----------------------------------------</span>
1112 <span class="o">...</span> <span class="n">a</span> <span class="o">.</span> <span class="n">Q</span> <span class="p">[</span><span class="n">b</span> <span class="n">c</span><span class="p">]</span> <span class="p">[</span><span class="n">Q</span><span class="p">]</span> <span class="n">step</span>
1114 <span class="n">The</span> <span class="n">step</span> <span class="n">combinator</span> <span class="n">executes</span> <span class="n">the</span> <span class="n">quotation</span> <span class="n">on</span> <span class="n">each</span> <span class="n">member</span> <span class="n">of</span> <span class="n">the</span> <span class="nb">list</span>
1115 <span class="n">on</span> <span class="n">top</span> <span class="n">of</span> <span class="n">the</span> <span class="n">stack</span><span class="o">.</span>
1118 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">V</span><span class="p">(</span><span class="s1">'0 [1 2 3] [+] step'</span><span class="p">)</span>
1121 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span> <span class="o">.</span> <span class="mi">0</span> <span class="p">[</span><span class="mi">1</span> <span class="mi">2</span> <span class="mi">3</span><span class="p">]</span> <span class="p">[</span><span class="o">+</span><span class="p">]</span> <span class="n">step</span>
1122 <span class="mi">0</span> <span class="o">.</span> <span class="p">[</span><span class="mi">1</span> <span class="mi">2</span> <span class="mi">3</span><span class="p">]</span> <span class="p">[</span><span class="o">+</span><span class="p">]</span> <span class="n">step</span>
1123 <span class="mi">0</span> <span class="p">[</span><span class="mi">1</span> <span class="mi">2</span> <span class="mi">3</span><span class="p">]</span> <span class="o">.</span> <span class="p">[</span><span class="o">+</span><span class="p">]</span> <span class="n">step</span>
1124 <span class="mi">0</span> <span class="p">[</span><span class="mi">1</span> <span class="mi">2</span> <span class="mi">3</span><span class="p">]</span> <span class="p">[</span><span class="o">+</span><span class="p">]</span> <span class="o">.</span> <span class="n">step</span>
1125 <span class="mi">0</span> <span class="mi">1</span> <span class="p">[</span><span class="o">+</span><span class="p">]</span> <span class="o">.</span> <span class="n">i</span> <span class="p">[</span><span class="mi">2</span> <span class="mi">3</span><span class="p">]</span> <span class="p">[</span><span class="o">+</span><span class="p">]</span> <span class="n">step</span>
1126 <span class="mi">0</span> <span class="mi">1</span> <span class="o">.</span> <span class="o">+</span> <span class="p">[</span><span class="mi">2</span> <span class="mi">3</span><span class="p">]</span> <span class="p">[</span><span class="o">+</span><span class="p">]</span> <span class="n">step</span>
1127 <span class="mi">1</span> <span class="o">.</span> <span class="p">[</span><span class="mi">2</span> <span class="mi">3</span><span class="p">]</span> <span class="p">[</span><span class="o">+</span><span class="p">]</span> <span class="n">step</span>
1128 <span class="mi">1</span> <span class="p">[</span><span class="mi">2</span> <span class="mi">3</span><span class="p">]</span> <span class="o">.</span> <span class="p">[</span><span class="o">+</span><span class="p">]</span> <span class="n">step</span>
1129 <span class="mi">1</span> <span class="p">[</span><span class="mi">2</span> <span class="mi">3</span><span class="p">]</span> <span class="p">[</span><span class="o">+</span><span class="p">]</span> <span class="o">.</span> <span class="n">step</span>
1130 <span class="mi">1</span> <span class="mi">2</span> <span class="p">[</span><span class="o">+</span><span class="p">]</span> <span class="o">.</span> <span class="n">i</span> <span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="p">[</span><span class="o">+</span><span class="p">]</span> <span class="n">step</span>
1131 <span class="mi">1</span> <span class="mi">2</span> <span class="o">.</span> <span class="o">+</span> <span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="p">[</span><span class="o">+</span><span class="p">]</span> <span class="n">step</span>
1132 <span class="mi">3</span> <span class="o">.</span> <span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="p">[</span><span class="o">+</span><span class="p">]</span> <span class="n">step</span>
1133 <span class="mi">3</span> <span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="o">.</span> <span class="p">[</span><span class="o">+</span><span class="p">]</span> <span class="n">step</span>
1134 <span class="mi">3</span> <span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="p">[</span><span class="o">+</span><span class="p">]</span> <span class="o">.</span> <span class="n">step</span>
1135 <span class="mi">3</span> <span class="mi">3</span> <span class="p">[</span><span class="o">+</span><span class="p">]</span> <span class="o">.</span> <span class="n">i</span>
1136 <span class="mi">3</span> <span class="mi">3</span> <span class="o">.</span> <span class="o">+</span>
1137 <span class="mi">6</span> <span class="o">.</span>
1141 <div class="section" id="times">
1142 <h3><code class="docutils literal notranslate"><span class="pre">times</span></code><a class="headerlink" href="#times" title="Permalink to this headline">¶</a></h3>
1143 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">V</span><span class="p">(</span><span class="s1">'3 2 1 2 [+] times'</span><span class="p">)</span>
1146 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span> <span class="o">.</span> <span class="mi">3</span> <span class="mi">2</span> <span class="mi">1</span> <span class="mi">2</span> <span class="p">[</span><span class="o">+</span><span class="p">]</span> <span class="n">times</span>
1147 <span class="mi">3</span> <span class="o">.</span> <span class="mi">2</span> <span class="mi">1</span> <span class="mi">2</span> <span class="p">[</span><span class="o">+</span><span class="p">]</span> <span class="n">times</span>
1148 <span class="mi">3</span> <span class="mi">2</span> <span class="o">.</span> <span class="mi">1</span> <span class="mi">2</span> <span class="p">[</span><span class="o">+</span><span class="p">]</span> <span class="n">times</span>
1149 <span class="mi">3</span> <span class="mi">2</span> <span class="mi">1</span> <span class="o">.</span> <span class="mi">2</span> <span class="p">[</span><span class="o">+</span><span class="p">]</span> <span class="n">times</span>
1150 <span class="mi">3</span> <span class="mi">2</span> <span class="mi">1</span> <span class="mi">2</span> <span class="o">.</span> <span class="p">[</span><span class="o">+</span><span class="p">]</span> <span class="n">times</span>
1151 <span class="mi">3</span> <span class="mi">2</span> <span class="mi">1</span> <span class="mi">2</span> <span class="p">[</span><span class="o">+</span><span class="p">]</span> <span class="o">.</span> <span class="n">times</span>
1152 <span class="mi">3</span> <span class="mi">2</span> <span class="mi">1</span> <span class="o">.</span> <span class="o">+</span> <span class="mi">1</span> <span class="p">[</span><span class="o">+</span><span class="p">]</span> <span class="n">times</span>
1153 <span class="mi">3</span> <span class="mi">3</span> <span class="o">.</span> <span class="mi">1</span> <span class="p">[</span><span class="o">+</span><span class="p">]</span> <span class="n">times</span>
1154 <span class="mi">3</span> <span class="mi">3</span> <span class="mi">1</span> <span class="o">.</span> <span class="p">[</span><span class="o">+</span><span class="p">]</span> <span class="n">times</span>
1155 <span class="mi">3</span> <span class="mi">3</span> <span class="mi">1</span> <span class="p">[</span><span class="o">+</span><span class="p">]</span> <span class="o">.</span> <span class="n">times</span>
1156 <span class="mi">3</span> <span class="mi">3</span> <span class="o">.</span> <span class="o">+</span>
1157 <span class="mi">6</span> <span class="o">.</span>
1161 <div class="section" id="b">
1162 <h3><code class="docutils literal notranslate"><span class="pre">b</span></code><a class="headerlink" href="#b" title="Permalink to this headline">¶</a></h3>
1163 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'[b] help'</span><span class="p">)</span>
1166 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">b</span> <span class="o">==</span> <span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="n">dip</span> <span class="n">i</span>
1168 <span class="o">...</span> <span class="p">[</span><span class="n">P</span><span class="p">]</span> <span class="p">[</span><span class="n">Q</span><span class="p">]</span> <span class="n">b</span> <span class="o">==</span> <span class="o">...</span> <span class="p">[</span><span class="n">P</span><span class="p">]</span> <span class="n">i</span> <span class="p">[</span><span class="n">Q</span><span class="p">]</span> <span class="n">i</span>
1169 <span class="o">...</span> <span class="p">[</span><span class="n">P</span><span class="p">]</span> <span class="p">[</span><span class="n">Q</span><span class="p">]</span> <span class="n">b</span> <span class="o">==</span> <span class="o">...</span> <span class="n">P</span> <span class="n">Q</span>
1172 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">V</span><span class="p">(</span><span class="s1">'1 2 [3] [4] b'</span><span class="p">)</span>
1175 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span> <span class="o">.</span> <span class="mi">1</span> <span class="mi">2</span> <span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="p">[</span><span class="mi">4</span><span class="p">]</span> <span class="n">b</span>
1176 <span class="mi">1</span> <span class="o">.</span> <span class="mi">2</span> <span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="p">[</span><span class="mi">4</span><span class="p">]</span> <span class="n">b</span>
1177 <span class="mi">1</span> <span class="mi">2</span> <span class="o">.</span> <span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="p">[</span><span class="mi">4</span><span class="p">]</span> <span class="n">b</span>
1178 <span class="mi">1</span> <span class="mi">2</span> <span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="o">.</span> <span class="p">[</span><span class="mi">4</span><span class="p">]</span> <span class="n">b</span>
1179 <span class="mi">1</span> <span class="mi">2</span> <span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="p">[</span><span class="mi">4</span><span class="p">]</span> <span class="o">.</span> <span class="n">b</span>
1180 <span class="mi">1</span> <span class="mi">2</span> <span class="o">.</span> <span class="mi">3</span> <span class="mi">4</span>
1181 <span class="mi">1</span> <span class="mi">2</span> <span class="mi">3</span> <span class="o">.</span> <span class="mi">4</span>
1182 <span class="mi">1</span> <span class="mi">2</span> <span class="mi">3</span> <span class="mi">4</span> <span class="o">.</span>
1186 <div class="section" id="while">
1187 <h3><code class="docutils literal notranslate"><span class="pre">while</span></code><a class="headerlink" href="#while" title="Permalink to this headline">¶</a></h3>
1188 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">[</span><span class="n">predicate</span><span class="p">]</span> <span class="p">[</span><span class="n">body</span><span class="p">]</span> <span class="k">while</span>
1191 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'3 [0 >] [dup --] while'</span><span class="p">)</span>
1194 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">3</span> <span class="mi">2</span> <span class="mi">1</span> <span class="mi">0</span>
1198 <div class="section" id="x">
1199 <h3><code class="docutils literal notranslate"><span class="pre">x</span></code><a class="headerlink" href="#x" title="Permalink to this headline">¶</a></h3>
1200 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'[x] help'</span><span class="p">)</span>
1203 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">x</span> <span class="o">==</span> <span class="n">dup</span> <span class="n">i</span>
1205 <span class="o">...</span> <span class="p">[</span><span class="n">Q</span><span class="p">]</span> <span class="n">x</span> <span class="o">=</span> <span class="o">...</span> <span class="p">[</span><span class="n">Q</span><span class="p">]</span> <span class="n">dup</span> <span class="n">i</span>
1206 <span class="o">...</span> <span class="p">[</span><span class="n">Q</span><span class="p">]</span> <span class="n">x</span> <span class="o">=</span> <span class="o">...</span> <span class="p">[</span><span class="n">Q</span><span class="p">]</span> <span class="p">[</span><span class="n">Q</span><span class="p">]</span> <span class="n">i</span>
1207 <span class="o">...</span> <span class="p">[</span><span class="n">Q</span><span class="p">]</span> <span class="n">x</span> <span class="o">=</span> <span class="o">...</span> <span class="p">[</span><span class="n">Q</span><span class="p">]</span> <span class="n">Q</span>
1210 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">V</span><span class="p">(</span><span class="s1">'1 [2] [i 3] x'</span><span class="p">)</span> <span class="c1"># Kind of a pointless example.</span>
1213 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span> <span class="o">.</span> <span class="mi">1</span> <span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="p">[</span><span class="n">i</span> <span class="mi">3</span><span class="p">]</span> <span class="n">x</span>
1214 <span class="mi">1</span> <span class="o">.</span> <span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="p">[</span><span class="n">i</span> <span class="mi">3</span><span class="p">]</span> <span class="n">x</span>
1215 <span class="mi">1</span> <span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">.</span> <span class="p">[</span><span class="n">i</span> <span class="mi">3</span><span class="p">]</span> <span class="n">x</span>
1216 <span class="mi">1</span> <span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="p">[</span><span class="n">i</span> <span class="mi">3</span><span class="p">]</span> <span class="o">.</span> <span class="n">x</span>
1217 <span class="mi">1</span> <span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="p">[</span><span class="n">i</span> <span class="mi">3</span><span class="p">]</span> <span class="o">.</span> <span class="n">i</span> <span class="mi">3</span>
1218 <span class="mi">1</span> <span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">.</span> <span class="n">i</span> <span class="mi">3</span> <span class="mi">3</span>
1219 <span class="mi">1</span> <span class="o">.</span> <span class="mi">2</span> <span class="mi">3</span> <span class="mi">3</span>
1220 <span class="mi">1</span> <span class="mi">2</span> <span class="o">.</span> <span class="mi">3</span> <span class="mi">3</span>
1221 <span class="mi">1</span> <span class="mi">2</span> <span class="mi">3</span> <span class="o">.</span> <span class="mi">3</span>
1222 <span class="mi">1</span> <span class="mi">2</span> <span class="mi">3</span> <span class="mi">3</span> <span class="o">.</span>
1227 <div class="section" id="void">
1228 <h2><code class="docutils literal notranslate"><span class="pre">void</span></code><a class="headerlink" href="#void" title="Permalink to this headline">¶</a></h2>
1229 <p>Implements <a class="reference external" href="https://en.wikipedia.org/wiki/Laws_of_Form#The_primary_arithmetic_.28Chapter_4.29">**Laws of Form**
1231 over quote-only datastructures (that is, datastructures that consist
1232 soley of containers, without strings or numbers or anything else.)</p>
1233 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'[] void'</span><span class="p">)</span>
1236 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kc">False</span>
1239 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'[[]] void'</span><span class="p">)</span>
1242 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kc">True</span>
1245 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'[[][[]]] void'</span><span class="p">)</span>
1248 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kc">True</span>
1251 <div class="code ipython2 highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'[[[]][[][]]] void'</span><span class="p">)</span>
1254 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kc">False</span>
1264 <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
1265 <div class="sphinxsidebarwrapper">
1266 <h3><a href="index.html">Table Of Contents</a></h3>
1268 <li><a class="reference internal" href="#">Functions Grouped by, er, Function with Examples</a><ul>
1269 <li><a class="reference internal" href="#stack-chatter">Stack Chatter</a><ul>
1270 <li><a class="reference internal" href="#clear"><code class="docutils literal notranslate"><span class="pre">clear</span></code></a></li>
1271 <li><a class="reference internal" href="#dup-dupd"><code class="docutils literal notranslate"><span class="pre">dup</span></code> <code class="docutils literal notranslate"><span class="pre">dupd</span></code></a></li>
1272 <li><a class="reference internal" href="#enstacken-disenstacken-stack-unstack"><code class="docutils literal notranslate"><span class="pre">enstacken</span></code> <code class="docutils literal notranslate"><span class="pre">disenstacken</span></code> <code class="docutils literal notranslate"><span class="pre">stack</span></code> <code class="docutils literal notranslate"><span class="pre">unstack</span></code></a></li>
1273 <li><a class="reference internal" href="#pop-popd-popop"><code class="docutils literal notranslate"><span class="pre">pop</span></code> <code class="docutils literal notranslate"><span class="pre">popd</span></code> <code class="docutils literal notranslate"><span class="pre">popop</span></code></a></li>
1274 <li><a class="reference internal" href="#roll-rolldown-roll-rollup"><code class="docutils literal notranslate"><span class="pre">roll<</span></code> <code class="docutils literal notranslate"><span class="pre">rolldown</span></code> <code class="docutils literal notranslate"><span class="pre">roll></span></code> <code class="docutils literal notranslate"><span class="pre">rollup</span></code></a></li>
1275 <li><a class="reference internal" href="#swap"><code class="docutils literal notranslate"><span class="pre">swap</span></code></a></li>
1276 <li><a class="reference internal" href="#tuck-over"><code class="docutils literal notranslate"><span class="pre">tuck</span></code> <code class="docutils literal notranslate"><span class="pre">over</span></code></a></li>
1277 <li><a class="reference internal" href="#unit-quoted-unquoted"><code class="docutils literal notranslate"><span class="pre">unit</span></code> <code class="docutils literal notranslate"><span class="pre">quoted</span></code> <code class="docutils literal notranslate"><span class="pre">unquoted</span></code></a></li>
1280 <li><a class="reference internal" href="#list-words">List words</a><ul>
1281 <li><a class="reference internal" href="#concat-swoncat-shunt"><code class="docutils literal notranslate"><span class="pre">concat</span></code> <code class="docutils literal notranslate"><span class="pre">swoncat</span></code> <code class="docutils literal notranslate"><span class="pre">shunt</span></code></a></li>
1282 <li><a class="reference internal" href="#cons-swons-uncons"><code class="docutils literal notranslate"><span class="pre">cons</span></code> <code class="docutils literal notranslate"><span class="pre">swons</span></code> <code class="docutils literal notranslate"><span class="pre">uncons</span></code></a></li>
1283 <li><a class="reference internal" href="#first-second-third-rest"><code class="docutils literal notranslate"><span class="pre">first</span></code> <code class="docutils literal notranslate"><span class="pre">second</span></code> <code class="docutils literal notranslate"><span class="pre">third</span></code> <code class="docutils literal notranslate"><span class="pre">rest</span></code></a></li>
1284 <li><a class="reference internal" href="#flatten"><code class="docutils literal notranslate"><span class="pre">flatten</span></code></a></li>
1285 <li><a class="reference internal" href="#getitem-at-of-drop-take"><code class="docutils literal notranslate"><span class="pre">getitem</span></code> <code class="docutils literal notranslate"><span class="pre">at</span></code> <code class="docutils literal notranslate"><span class="pre">of</span></code> <code class="docutils literal notranslate"><span class="pre">drop</span></code> <code class="docutils literal notranslate"><span class="pre">take</span></code></a></li>
1286 <li><a class="reference internal" href="#remove"><code class="docutils literal notranslate"><span class="pre">remove</span></code></a></li>
1287 <li><a class="reference internal" href="#reverse"><code class="docutils literal notranslate"><span class="pre">reverse</span></code></a></li>
1288 <li><a class="reference internal" href="#size"><code class="docutils literal notranslate"><span class="pre">size</span></code></a></li>
1289 <li><a class="reference internal" href="#swaack"><code class="docutils literal notranslate"><span class="pre">swaack</span></code></a></li>
1290 <li><a class="reference internal" href="#choice-select"><code class="docutils literal notranslate"><span class="pre">choice</span></code> <code class="docutils literal notranslate"><span class="pre">select</span></code></a></li>
1291 <li><a class="reference internal" href="#zip"><code class="docutils literal notranslate"><span class="pre">zip</span></code></a></li>
1294 <li><a class="reference internal" href="#math-words">Math words</a><ul>
1295 <li><a class="reference internal" href="#add"><code class="docutils literal notranslate"><span class="pre">+</span></code> <code class="docutils literal notranslate"><span class="pre">add</span></code></a></li>
1296 <li><a class="reference internal" href="#sub"><code class="docutils literal notranslate"><span class="pre">-</span></code> <code class="docutils literal notranslate"><span class="pre">sub</span></code></a></li>
1297 <li><a class="reference internal" href="#mul"><code class="docutils literal notranslate"><span class="pre">*</span></code> <code class="docutils literal notranslate"><span class="pre">mul</span></code></a></li>
1298 <li><a class="reference internal" href="#div-floordiv-truediv"><code class="docutils literal notranslate"><span class="pre">/</span></code> <code class="docutils literal notranslate"><span class="pre">div</span></code> <code class="docutils literal notranslate"><span class="pre">floordiv</span></code> <code class="docutils literal notranslate"><span class="pre">truediv</span></code></a></li>
1299 <li><a class="reference internal" href="#mod-modulus-rem-remainder"><code class="docutils literal notranslate"><span class="pre">%</span></code> <code class="docutils literal notranslate"><span class="pre">mod</span></code> <code class="docutils literal notranslate"><span class="pre">modulus</span></code> <code class="docutils literal notranslate"><span class="pre">rem</span></code> <code class="docutils literal notranslate"><span class="pre">remainder</span></code></a></li>
1300 <li><a class="reference internal" href="#neg"><code class="docutils literal notranslate"><span class="pre">neg</span></code></a></li>
1301 <li><a class="reference internal" href="#pow"><code class="docutils literal notranslate"><span class="pre">pow</span></code></a></li>
1302 <li><a class="reference internal" href="#sqr-sqrt"><code class="docutils literal notranslate"><span class="pre">sqr</span></code> <code class="docutils literal notranslate"><span class="pre">sqrt</span></code></a></li>
1303 <li><a class="reference internal" href="#succ-pred"><code class="docutils literal notranslate"><span class="pre">++</span></code> <code class="docutils literal notranslate"><span class="pre">succ</span></code> <code class="docutils literal notranslate"><span class="pre">--</span></code> <code class="docutils literal notranslate"><span class="pre">pred</span></code></a></li>
1304 <li><a class="reference internal" href="#lshift-rshift"><code class="docutils literal notranslate"><span class="pre"><<</span></code> <code class="docutils literal notranslate"><span class="pre">lshift</span></code> <code class="docutils literal notranslate"><span class="pre">>></span></code> <code class="docutils literal notranslate"><span class="pre">rshift</span></code></a></li>
1305 <li><a class="reference internal" href="#average"><code class="docutils literal notranslate"><span class="pre">average</span></code></a></li>
1306 <li><a class="reference internal" href="#range-range-to-zero-down-to-zero"><code class="docutils literal notranslate"><span class="pre">range</span></code> <code class="docutils literal notranslate"><span class="pre">range_to_zero</span></code> <code class="docutils literal notranslate"><span class="pre">down_to_zero</span></code></a></li>
1307 <li><a class="reference internal" href="#product"><code class="docutils literal notranslate"><span class="pre">product</span></code></a></li>
1308 <li><a class="reference internal" href="#sum"><code class="docutils literal notranslate"><span class="pre">sum</span></code></a></li>
1309 <li><a class="reference internal" href="#min"><code class="docutils literal notranslate"><span class="pre">min</span></code></a></li>
1310 <li><a class="reference internal" href="#gcd"><code class="docutils literal notranslate"><span class="pre">gcd</span></code></a></li>
1311 <li><a class="reference internal" href="#least-fraction"><code class="docutils literal notranslate"><span class="pre">least_fraction</span></code></a></li>
1314 <li><a class="reference internal" href="#logic-and-comparison">Logic and Comparison</a><ul>
1315 <li><a class="reference internal" href="#truthy"><code class="docutils literal notranslate"><span class="pre">?</span></code> <code class="docutils literal notranslate"><span class="pre">truthy</span></code></a></li>
1316 <li><a class="reference internal" href="#and"><code class="docutils literal notranslate"><span class="pre">&</span></code> <code class="docutils literal notranslate"><span class="pre">and</span></code></a></li>
1317 <li><a class="reference internal" href="#ne"><code class="docutils literal notranslate"><span class="pre">!=</span></code> <code class="docutils literal notranslate"><span class="pre"><></span></code> <code class="docutils literal notranslate"><span class="pre">ne</span></code></a></li>
1318 <li><a class="reference internal" href="#xor"><code class="docutils literal notranslate"><span class="pre">^</span></code> <code class="docutils literal notranslate"><span class="pre">xor</span></code></a></li>
1321 <li><a class="reference internal" href="#miscellaneous">Miscellaneous</a><ul>
1322 <li><a class="reference internal" href="#help"><code class="docutils literal notranslate"><span class="pre">help</span></code></a></li>
1323 <li><a class="reference internal" href="#parse"><code class="docutils literal notranslate"><span class="pre">parse</span></code></a></li>
1324 <li><a class="reference internal" href="#run"><code class="docutils literal notranslate"><span class="pre">run</span></code></a></li>
1327 <li><a class="reference internal" href="#combinators">Combinators</a><ul>
1328 <li><a class="reference internal" href="#app1-app2-app3"><code class="docutils literal notranslate"><span class="pre">app1</span></code> <code class="docutils literal notranslate"><span class="pre">app2</span></code> <code class="docutils literal notranslate"><span class="pre">app3</span></code></a></li>
1329 <li><a class="reference internal" href="#anamorphism"><code class="docutils literal notranslate"><span class="pre">anamorphism</span></code></a></li>
1330 <li><a class="reference internal" href="#branch"><code class="docutils literal notranslate"><span class="pre">branch</span></code></a></li>
1331 <li><a class="reference internal" href="#cleave"><code class="docutils literal notranslate"><span class="pre">cleave</span></code></a></li>
1332 <li><a class="reference internal" href="#dip-dipd-dipdd"><code class="docutils literal notranslate"><span class="pre">dip</span></code> <code class="docutils literal notranslate"><span class="pre">dipd</span></code> <code class="docutils literal notranslate"><span class="pre">dipdd</span></code></a></li>
1333 <li><a class="reference internal" href="#dupdip"><code class="docutils literal notranslate"><span class="pre">dupdip</span></code></a></li>
1334 <li><a class="reference internal" href="#genrec-primrec"><code class="docutils literal notranslate"><span class="pre">genrec</span></code> <code class="docutils literal notranslate"><span class="pre">primrec</span></code></a></li>
1335 <li><a class="reference internal" href="#i"><code class="docutils literal notranslate"><span class="pre">i</span></code></a></li>
1336 <li><a class="reference internal" href="#ifte"><code class="docutils literal notranslate"><span class="pre">ifte</span></code></a></li>
1337 <li><a class="reference internal" href="#infra"><code class="docutils literal notranslate"><span class="pre">infra</span></code></a></li>
1338 <li><a class="reference internal" href="#loop"><code class="docutils literal notranslate"><span class="pre">loop</span></code></a></li>
1339 <li><a class="reference internal" href="#map-pam"><code class="docutils literal notranslate"><span class="pre">map</span></code> <code class="docutils literal notranslate"><span class="pre">pam</span></code></a></li>
1340 <li><a class="reference internal" href="#nullary-unary-binary-ternary"><code class="docutils literal notranslate"><span class="pre">nullary</span></code> <code class="docutils literal notranslate"><span class="pre">unary</span></code> <code class="docutils literal notranslate"><span class="pre">binary</span></code> <code class="docutils literal notranslate"><span class="pre">ternary</span></code></a></li>
1341 <li><a class="reference internal" href="#step"><code class="docutils literal notranslate"><span class="pre">step</span></code></a></li>
1342 <li><a class="reference internal" href="#times"><code class="docutils literal notranslate"><span class="pre">times</span></code></a></li>
1343 <li><a class="reference internal" href="#b"><code class="docutils literal notranslate"><span class="pre">b</span></code></a></li>
1344 <li><a class="reference internal" href="#while"><code class="docutils literal notranslate"><span class="pre">while</span></code></a></li>
1345 <li><a class="reference internal" href="#x"><code class="docutils literal notranslate"><span class="pre">x</span></code></a></li>
1348 <li><a class="reference internal" href="#void"><code class="docutils literal notranslate"><span class="pre">void</span></code></a></li>
1352 <div class="relations">
1353 <h3>Related Topics</h3>
1355 <li><a href="index.html">Documentation overview</a><ul>
1356 <li>Previous: <a href="library.html" title="previous chapter">Function Reference</a></li>
1357 <li>Next: <a href="types.html" title="next chapter">Type Inference of Joy Expressions</a></li>
1361 <div role="note" aria-label="source link">
1363 <ul class="this-page-menu">
1364 <li><a href="_sources/lib.rst.txt"
1365 rel="nofollow">Show Source</a></li>
1368 <div id="searchbox" style="display: none" role="search">
1369 <h3>Quick search</h3>
1370 <div class="searchformwrapper">
1371 <form class="search" action="search.html" method="get">
1372 <input type="text" name="q" />
1373 <input type="submit" value="Go" />
1374 <input type="hidden" name="check_keywords" value="yes" />
1375 <input type="hidden" name="area" value="default" />
1379 <script type="text/javascript">$('#searchbox').show(0);</script>
1382 <div class="clearer"></div>
1384 <div class="footer" role="contentinfo">
1385 <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/">
1386 <img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png" />
1389 <span xmlns:dct="http://purl.org/dc/terms/" property="dct:title">Thun Documentation</span> by <a xmlns:cc="http://creativecommons.org/ns#" href="https://joypy.osdn.io/" property="cc:attributionName" rel="cc:attributionURL">Simon Forman</a> is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/">Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License</a>.<br />Based on a work at <a xmlns:dct="http://purl.org/dc/terms/" href="https://osdn.net/projects/joypy/" rel="dct:source">https://osdn.net/projects/joypy/</a>.
1390 Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.7.3.