OSDN Git Service

Update docs.
[joypy/Thun.git] / docs / sphinx_docs / _build / html / lib.html
1
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
3   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4
5 <html xmlns="http://www.w3.org/1999/xhtml">
6   <head>
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 &#8212; 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" />
21    
22   <link rel="stylesheet" href="_static/custom.css" type="text/css" />
23   
24   
25   <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
26
27   </head><body>
28   
29
30     <div class="document">
31       <div class="documentwrapper">
32         <div class="bodywrapper">
33           <div class="body" role="main">
34             
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>
38 </pre></div>
39 </div>
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">&#39;1 2 3 clear&#39;</span><span class="p">)</span>
51 </pre></div>
52 </div>
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>
54 </pre></div>
55 </div>
56 </div>
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">&#39;1 2 3 dup&#39;</span><span class="p">)</span>
60 </pre></div>
61 </div>
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>
63 </pre></div>
64 </div>
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">&#39;1 2 3 dupd&#39;</span><span class="p">)</span>
66 </pre></div>
67 </div>
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>
69 </pre></div>
70 </div>
71 </div>
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">&#39;1 2 3 enstacken&#39;</span><span class="p">)</span> <span class="c1"># Replace the stack with a quote of itself.</span>
77 </pre></div>
78 </div>
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>
80 </pre></div>
81 </div>
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">&#39;4 5 6 [3 2 1] disenstacken&#39;</span><span class="p">)</span>  <span class="c1"># Unpack a list onto the stack.</span>
83 </pre></div>
84 </div>
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>
86 </pre></div>
87 </div>
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">&#39;1 2 3 stack&#39;</span><span class="p">)</span>  <span class="c1"># Get the stack on the stack.</span>
89 </pre></div>
90 </div>
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>
92 </pre></div>
93 </div>
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">&#39;1 2 3 [4 5 6] unstack&#39;</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>
97 </pre></div>
98 </div>
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>
100 </pre></div>
101 </div>
102 </div>
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">&#39;1 2 3 pop&#39;</span><span class="p">)</span>
106 </pre></div>
107 </div>
108 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">1</span> <span class="mi">2</span>
109 </pre></div>
110 </div>
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">&#39;1 2 3 popd&#39;</span><span class="p">)</span>
112 </pre></div>
113 </div>
114 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">1</span> <span class="mi">3</span>
115 </pre></div>
116 </div>
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">&#39;1 2 3 popop&#39;</span><span class="p">)</span>
118 </pre></div>
119 </div>
120 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">1</span>
121 </pre></div>
122 </div>
123 </div>
124 <div class="section" id="roll-rolldown-roll-rollup">
125 <h3><code class="docutils literal notranslate"><span class="pre">roll&lt;</span></code> <code class="docutils literal notranslate"><span class="pre">rolldown</span></code> <code class="docutils literal notranslate"><span class="pre">roll&gt;</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">&#39;1 2 3 roll&lt;&#39;</span><span class="p">)</span>
129 </pre></div>
130 </div>
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>
132 </pre></div>
133 </div>
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">&#39;1 2 3 roll&gt;&#39;</span><span class="p">)</span>
135 </pre></div>
136 </div>
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>
138 </pre></div>
139 </div>
140 </div>
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">&#39;1 2 3 swap&#39;</span><span class="p">)</span>
144 </pre></div>
145 </div>
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>
147 </pre></div>
148 </div>
149 </div>
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">&#39;1 2 3 tuck&#39;</span><span class="p">)</span>
153 </pre></div>
154 </div>
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>
156 </pre></div>
157 </div>
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">&#39;1 2 3 over&#39;</span><span class="p">)</span>
159 </pre></div>
160 </div>
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>
162 </pre></div>
163 </div>
164 </div>
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">&#39;1 2 3 unit&#39;</span><span class="p">)</span>
168 </pre></div>
169 </div>
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>
171 </pre></div>
172 </div>
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">&#39;1 2 3 quoted&#39;</span><span class="p">)</span>
174 </pre></div>
175 </div>
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>
177 </pre></div>
178 </div>
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">&#39;1 [2] 3 unquoted&#39;</span><span class="p">)</span>
180 </pre></div>
181 </div>
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>
183 </pre></div>
184 </div>
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">&#39;1 [dup] 3 unquoted&#39;</span><span class="p">)</span>  <span class="c1"># Unquoting evaluates.  Be aware.</span>
186 </pre></div>
187 </div>
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>
198 </pre></div>
199 </div>
200 </div>
201 </div>
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">&#39;[1 2 3] [4 5 6] concat&#39;</span><span class="p">)</span>
207 </pre></div>
208 </div>
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>
210 </pre></div>
211 </div>
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">&#39;[1 2 3] [4 5 6] swoncat&#39;</span><span class="p">)</span>
213 </pre></div>
214 </div>
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>
216 </pre></div>
217 </div>
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">&#39;[1 2 3] [4 5 6] shunt&#39;</span><span class="p">)</span>
219 </pre></div>
220 </div>
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>
222 </pre></div>
223 </div>
224 </div>
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">&#39;1 [2 3] cons&#39;</span><span class="p">)</span>
228 </pre></div>
229 </div>
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>
231 </pre></div>
232 </div>
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">&#39;[2 3] 1 swons&#39;</span><span class="p">)</span>
234 </pre></div>
235 </div>
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>
237 </pre></div>
238 </div>
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">&#39;[1 2 3] uncons&#39;</span><span class="p">)</span>
240 </pre></div>
241 </div>
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>
243 </pre></div>
244 </div>
245 </div>
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">&#39;[1 2 3 4] first&#39;</span><span class="p">)</span>
249 </pre></div>
250 </div>
251 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">1</span>
252 </pre></div>
253 </div>
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">&#39;[1 2 3 4] second&#39;</span><span class="p">)</span>
255 </pre></div>
256 </div>
257 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">2</span>
258 </pre></div>
259 </div>
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">&#39;[1 2 3 4] third&#39;</span><span class="p">)</span>
261 </pre></div>
262 </div>
263 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">3</span>
264 </pre></div>
265 </div>
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">&#39;[1 2 3 4] rest&#39;</span><span class="p">)</span>
267 </pre></div>
268 </div>
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>
270 </pre></div>
271 </div>
272 </div>
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">&#39;[[1] [2 [3] 4] [5 6]] flatten&#39;</span><span class="p">)</span>
276 </pre></div>
277 </div>
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>
279 </pre></div>
280 </div>
281 </div>
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">&#39;[10 11 12 13 14] 2 getitem&#39;</span><span class="p">)</span>
286 </pre></div>
287 </div>
288 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">12</span>
289 </pre></div>
290 </div>
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">&#39;[1 2 3 4] 0 at&#39;</span><span class="p">)</span>
292 </pre></div>
293 </div>
294 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">1</span>
295 </pre></div>
296 </div>
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">&#39;2 [1 2 3 4] of&#39;</span><span class="p">)</span>
298 </pre></div>
299 </div>
300 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">3</span>
301 </pre></div>
302 </div>
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">&#39;[1 2 3 4] 2 drop&#39;</span><span class="p">)</span>
304 </pre></div>
305 </div>
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>
307 </pre></div>
308 </div>
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">&#39;[1 2 3 4] 2 take&#39;</span><span class="p">)</span>  <span class="c1"># reverses the order</span>
310 </pre></div>
311 </div>
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>
313 </pre></div>
314 </div>
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>
316 </div>
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">&#39;[1 2 3 1 4] 1 remove&#39;</span><span class="p">)</span>
320 </pre></div>
321 </div>
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>
323 </pre></div>
324 </div>
325 </div>
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">&#39;[1 2 3 4] reverse&#39;</span><span class="p">)</span>
329 </pre></div>
330 </div>
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>
332 </pre></div>
333 </div>
334 </div>
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">&#39;[1 1 1 1] size&#39;</span><span class="p">)</span>
338 </pre></div>
339 </div>
340 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">4</span>
341 </pre></div>
342 </div>
343 </div>
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">&#39;1 2 3 [4 5 6] swaack&#39;</span><span class="p">)</span>
350 </pre></div>
351 </div>
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>
353 </pre></div>
354 </div>
355 </div>
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">&#39;23 9 1 choice&#39;</span><span class="p">)</span>
359 </pre></div>
360 </div>
361 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">9</span>
362 </pre></div>
363 </div>
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">&#39;23 9 0 choice&#39;</span><span class="p">)</span>
365 </pre></div>
366 </div>
367 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">23</span>
368 </pre></div>
369 </div>
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">&#39;[23 9 7] 1 select&#39;</span><span class="p">)</span>  <span class="c1"># select is basically getitem, should retire it?</span>
371 </pre></div>
372 </div>
373 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">9</span>
374 </pre></div>
375 </div>
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">&#39;[23 9 7] 0 select&#39;</span><span class="p">)</span>
377 </pre></div>
378 </div>
379 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">23</span>
380 </pre></div>
381 </div>
382 </div>
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">&#39;[1 2 3] [6 5 4] zip&#39;</span><span class="p">)</span>
386 </pre></div>
387 </div>
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>
389 </pre></div>
390 </div>
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">&#39;[1 2 3] [6 5 4] zip [sum] map&#39;</span><span class="p">)</span>
392 </pre></div>
393 </div>
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>
395 </pre></div>
396 </div>
397 </div>
398 </div>
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">&#39;23 9 +&#39;</span><span class="p">)</span>
404 </pre></div>
405 </div>
406 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">32</span>
407 </pre></div>
408 </div>
409 </div>
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">&#39;23 9 -&#39;</span><span class="p">)</span>
413 </pre></div>
414 </div>
415 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">14</span>
416 </pre></div>
417 </div>
418 </div>
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">&#39;23 9 *&#39;</span><span class="p">)</span>
422 </pre></div>
423 </div>
424 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">207</span>
425 </pre></div>
426 </div>
427 </div>
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">&#39;23 9 /&#39;</span><span class="p">)</span>
431 </pre></div>
432 </div>
433 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mf">2.5555555555555554</span>
434 </pre></div>
435 </div>
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">&#39;23 -9 truediv&#39;</span><span class="p">)</span>
437 </pre></div>
438 </div>
439 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">-</span><span class="mf">2.5555555555555554</span>
440 </pre></div>
441 </div>
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">&#39;23 9 div&#39;</span><span class="p">)</span>
443 </pre></div>
444 </div>
445 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">2</span>
446 </pre></div>
447 </div>
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">&#39;23 9 floordiv&#39;</span><span class="p">)</span>
449 </pre></div>
450 </div>
451 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">2</span>
452 </pre></div>
453 </div>
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">&#39;23 -9 div&#39;</span><span class="p">)</span>
455 </pre></div>
456 </div>
457 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">-</span><span class="mi">3</span>
458 </pre></div>
459 </div>
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">&#39;23 -9 floordiv&#39;</span><span class="p">)</span>
461 </pre></div>
462 </div>
463 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">-</span><span class="mi">3</span>
464 </pre></div>
465 </div>
466 </div>
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">&#39;23 9 %&#39;</span><span class="p">)</span>
470 </pre></div>
471 </div>
472 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">5</span>
473 </pre></div>
474 </div>
475 </div>
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">&#39;23 neg -5 neg&#39;</span><span class="p">)</span>
479 </pre></div>
480 </div>
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>
482 </pre></div>
483 </div>
484 </div>
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">&#39;2 10 pow&#39;</span><span class="p">)</span>
488 </pre></div>
489 </div>
490 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">1024</span>
491 </pre></div>
492 </div>
493 </div>
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">&#39;23 sqr&#39;</span><span class="p">)</span>
497 </pre></div>
498 </div>
499 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">529</span>
500 </pre></div>
501 </div>
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">&#39;23 sqrt&#39;</span><span class="p">)</span>
503 </pre></div>
504 </div>
505 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mf">4.795831523312719</span>
506 </pre></div>
507 </div>
508 </div>
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">&#39;1 ++&#39;</span><span class="p">)</span>
512 </pre></div>
513 </div>
514 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">2</span>
515 </pre></div>
516 </div>
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">&#39;1 --&#39;</span><span class="p">)</span>
518 </pre></div>
519 </div>
520 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">0</span>
521 </pre></div>
522 </div>
523 </div>
524 <div class="section" id="lshift-rshift">
525 <h3><code class="docutils literal notranslate"><span class="pre">&lt;&lt;</span></code> <code class="docutils literal notranslate"><span class="pre">lshift</span></code> <code class="docutils literal notranslate"><span class="pre">&gt;&gt;</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">&#39;8 1 &lt;&lt;&#39;</span><span class="p">)</span>
527 </pre></div>
528 </div>
529 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">16</span>
530 </pre></div>
531 </div>
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">&#39;8 1 &gt;&gt;&#39;</span><span class="p">)</span>
533 </pre></div>
534 </div>
535 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">4</span>
536 </pre></div>
537 </div>
538 </div>
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">&#39;[1 2 3 5] average&#39;</span><span class="p">)</span>
542 </pre></div>
543 </div>
544 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mf">2.75</span>
545 </pre></div>
546 </div>
547 </div>
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">&#39;5 range&#39;</span><span class="p">)</span>
551 </pre></div>
552 </div>
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>
554 </pre></div>
555 </div>
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">&#39;5 range_to_zero&#39;</span><span class="p">)</span>
557 </pre></div>
558 </div>
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>
560 </pre></div>
561 </div>
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">&#39;5 down_to_zero&#39;</span><span class="p">)</span>
563 </pre></div>
564 </div>
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>
566 </pre></div>
567 </div>
568 </div>
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">&#39;[1 2 3 5] product&#39;</span><span class="p">)</span>
572 </pre></div>
573 </div>
574 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">30</span>
575 </pre></div>
576 </div>
577 </div>
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">&#39;[1 2 3 5] sum&#39;</span><span class="p">)</span>
581 </pre></div>
582 </div>
583 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">11</span>
584 </pre></div>
585 </div>
586 </div>
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">&#39;[1 2 3 5] min&#39;</span><span class="p">)</span>
590 </pre></div>
591 </div>
592 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">1</span>
593 </pre></div>
594 </div>
595 </div>
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">&#39;45 30 gcd&#39;</span><span class="p">)</span>
599 </pre></div>
600 </div>
601 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">15</span>
602 </pre></div>
603 </div>
604 </div>
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">&#39;[45 30] least_fraction&#39;</span><span class="p">)</span>
610 </pre></div>
611 </div>
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>
613 </pre></div>
614 </div>
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">&#39;[23 12] least_fraction&#39;</span><span class="p">)</span>
616 </pre></div>
617 </div>
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>
619 </pre></div>
620 </div>
621 </div>
622 </div>
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">&#39;23 truthy&#39;</span><span class="p">)</span>
629 </pre></div>
630 </div>
631 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kc">True</span>
632 </pre></div>
633 </div>
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">&#39;[] truthy&#39;</span><span class="p">)</span>  <span class="c1"># Python semantics.</span>
635 </pre></div>
636 </div>
637 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kc">False</span>
638 </pre></div>
639 </div>
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">&#39;0 truthy&#39;</span><span class="p">)</span>
641 </pre></div>
642 </div>
643 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kc">False</span>
644 </pre></div>
645 </div>
646 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span>? == dup truthy
647 </pre></div>
648 </div>
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">&#39;23 ?&#39;</span><span class="p">)</span>
650 </pre></div>
651 </div>
652 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span>        . 23 ?
653      23 . ?
654      23 . dup truthy
655   23 23 . truthy
656 23 True .
657 </pre></div>
658 </div>
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">&#39;[] ?&#39;</span><span class="p">)</span>
660 </pre></div>
661 </div>
662 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">[]</span> <span class="kc">False</span>
663 </pre></div>
664 </div>
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">&#39;0 ?&#39;</span><span class="p">)</span>
666 </pre></div>
667 </div>
668 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">0</span> <span class="kc">False</span>
669 </pre></div>
670 </div>
671 </div>
672 <div class="section" id="and">
673 <h3><code class="docutils literal notranslate"><span class="pre">&amp;</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">&#39;23 9 &amp;&#39;</span><span class="p">)</span>
675 </pre></div>
676 </div>
677 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">1</span>
678 </pre></div>
679 </div>
680 </div>
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">&lt;&gt;</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">&#39;23 9 !=&#39;</span><span class="p">)</span>
684 </pre></div>
685 </div>
686 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kc">True</span>
687 </pre></div>
688 </div>
689 <div class="line-block">
690 <div class="line">The usual suspects: - <code class="docutils literal notranslate"><span class="pre">&lt;</span></code> <code class="docutils literal notranslate"><span class="pre">lt</span></code> - <code class="docutils literal notranslate"><span class="pre">&lt;=</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">&gt;</span></code> <code class="docutils literal notranslate"><span class="pre">gt</span></code> - <code class="docutils literal notranslate"><span class="pre">&gt;=</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>
692 </div>
693 </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">&#39;1 1 ^&#39;</span><span class="p">)</span>
697 </pre></div>
698 </div>
699 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">0</span>
700 </pre></div>
701 </div>
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">&#39;1 0 ^&#39;</span><span class="p">)</span>
703 </pre></div>
704 </div>
705 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">1</span>
706 </pre></div>
707 </div>
708 </div>
709 </div>
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">&#39;[help] help&#39;</span><span class="p">)</span>
715 </pre></div>
716 </div>
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>
718 </pre></div>
719 </div>
720 </div>
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">&#39;[parse] help&#39;</span><span class="p">)</span>
724 </pre></div>
725 </div>
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>
727 </pre></div>
728 </div>
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">&#39;1 &quot;2 [3] dup&quot; parse&#39;</span><span class="p">)</span>
730 </pre></div>
731 </div>
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>
733 </pre></div>
734 </div>
735 </div>
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">&#39;[1 2 dup + +] run&#39;</span><span class="p">)</span>
740 </pre></div>
741 </div>
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>
743 </pre></div>
744 </div>
745 </div>
746 </div>
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">&#39;[app1] help&#39;</span><span class="p">)</span>
752 </pre></div>
753 </div>
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>
757
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>
761 </pre></div>
762 </div>
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">&#39;10 4 [sqr *] app1&#39;</span><span class="p">)</span>
764 </pre></div>
765 </div>
766 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">10</span> <span class="mi">160</span>
767 </pre></div>
768 </div>
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">&#39;10 3 4 [sqr *] app2&#39;</span><span class="p">)</span>
770 </pre></div>
771 </div>
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>
773 </pre></div>
774 </div>
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">&#39;[app2] help&#39;</span><span class="p">)</span>
776 </pre></div>
777 </div>
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>
779
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>
784 </pre></div>
785 </div>
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">&#39;10 2 3 4 [sqr *] app3&#39;</span><span class="p">)</span>
787 </pre></div>
788 </div>
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>
790 </pre></div>
791 </div>
792 </div>
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>
800 </pre></div>
801 </div>
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">&lt;=</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>
804 </pre></div>
805 </div>
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">&#39;3 [0 &lt;=] [1 - dup] anamorphism&#39;</span><span class="p">)</span>
807 </pre></div>
808 </div>
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>
810 </pre></div>
811 </div>
812 </div>
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">&#39;3 4 1 [+] [*] branch&#39;</span><span class="p">)</span>
816 </pre></div>
817 </div>
818 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">12</span>
819 </pre></div>
820 </div>
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">&#39;3 4 0 [+] [*] branch&#39;</span><span class="p">)</span>
822 </pre></div>
823 </div>
824 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">7</span>
825 </pre></div>
826 </div>
827 </div>
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>
831 </pre></div>
832 </div>
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
838 Q(X).”</p>
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>
846 </pre></div>
847 </div>
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">&#39;10 2 [+] [-] cleave&#39;</span><span class="p">)</span>
849 </pre></div>
850 </div>
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>
852 </pre></div>
853 </div>
854 </div>
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">&#39;1 2 3 4 5 [+] dip&#39;</span><span class="p">)</span>
858 </pre></div>
859 </div>
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>
861 </pre></div>
862 </div>
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">&#39;1 2 3 4 5 [+] dipd&#39;</span><span class="p">)</span>
864 </pre></div>
865 </div>
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>
867 </pre></div>
868 </div>
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">&#39;1 2 3 4 5 [+] dipdd&#39;</span><span class="p">)</span>
870 </pre></div>
871 </div>
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>
873 </pre></div>
874 </div>
875 </div>
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>
881 </pre></div>
882 </div>
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">&#39;23 [++] dupdip *&#39;</span><span class="p">)</span>  <span class="c1"># N(N + 1)</span>
884 </pre></div>
885 </div>
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>
893 </pre></div>
894 </div>
895 </div>
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">&#39;[genrec] help&#39;</span><span class="p">)</span>
899 </pre></div>
900 </div>
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>
902
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>
906
907 <span class="n">From</span> <span class="s2">&quot;Recursion Theory and Joy&quot;</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">&quot;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">&quot;</span>
918
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">&quot;sandwiching&quot;</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>
922
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">&#39;F&#39;</span><span class="p">:</span>
924
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>
926
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>
928
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>
930
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>
935
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>
938
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>
940
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>
945 </pre></div>
946 </div>
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">&#39;3 [1 &lt;=] [] [dup --] [i *] genrec&#39;</span><span class="p">)</span>
948 </pre></div>
949 </div>
950 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">6</span>
951 </pre></div>
952 </div>
953 </div>
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">&#39;1 2 3 [+ +] i&#39;</span><span class="p">)</span>
957 </pre></div>
958 </div>
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>
967 </pre></div>
968 </div>
969 </div>
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>
973 </pre></div>
974 </div>
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">&#39;1 2 [1] [+] [*] ifte&#39;</span><span class="p">)</span>
976 </pre></div>
977 </div>
978 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">3</span>
979 </pre></div>
980 </div>
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">&#39;1 2 [0] [+] [*] ifte&#39;</span><span class="p">)</span>
982 </pre></div>
983 </div>
984 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">2</span>
985 </pre></div>
986 </div>
987 </div>
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">&#39;1 2 3 [4 5 6] [* +] infra&#39;</span><span class="p">)</span>
991 </pre></div>
992 </div>
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>
1004 </pre></div>
1005 </div>
1006 </div>
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">&#39;[loop] help&#39;</span><span class="p">)</span>
1010 </pre></div>
1011 </div>
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>
1013
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>
1017
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>
1021 </pre></div>
1022 </div>
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">&#39;3 dup [1 - dup] loop&#39;</span><span class="p">)</span>
1024 </pre></div>
1025 </div>
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>
1046 </pre></div>
1047 </div>
1048 </div>
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">&#39;10 [1 2 3] [*] map&#39;</span><span class="p">)</span>
1052 </pre></div>
1053 </div>
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>
1055 </pre></div>
1056 </div>
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">&#39;10 5 [[*][/][+][-]] pam&#39;</span><span class="p">)</span>
1058 </pre></div>
1059 </div>
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>
1061 </pre></div>
1062 </div>
1063 </div>
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">&#39;1 2 3 4 5 [+] nullary&#39;</span><span class="p">)</span>
1069 </pre></div>
1070 </div>
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>
1072 </pre></div>
1073 </div>
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">&#39;1 2 3 4 5 [+] unary&#39;</span><span class="p">)</span>
1075 </pre></div>
1076 </div>
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>
1078 </pre></div>
1079 </div>
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">&#39;1 2 3 4 5 [+] binary&#39;</span><span class="p">)</span>  <span class="c1"># + has arity 2 so this is technically pointless...</span>
1081 </pre></div>
1082 </div>
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>
1084 </pre></div>
1085 </div>
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">&#39;1 2 3 4 5 [+] ternary&#39;</span><span class="p">)</span>
1087 </pre></div>
1088 </div>
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>
1090 </pre></div>
1091 </div>
1092 </div>
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">&#39;[step] help&#39;</span><span class="p">)</span>
1096 </pre></div>
1097 </div>
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>
1099
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>
1103
1104
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>
1108
1109
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>
1113
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>
1116 </pre></div>
1117 </div>
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">&#39;0 [1 2 3] [+] step&#39;</span><span class="p">)</span>
1119 </pre></div>
1120 </div>
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>
1138 </pre></div>
1139 </div>
1140 </div>
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">&#39;3 2 1 2 [+] times&#39;</span><span class="p">)</span>
1144 </pre></div>
1145 </div>
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>
1158 </pre></div>
1159 </div>
1160 </div>
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">&#39;[b] help&#39;</span><span class="p">)</span>
1164 </pre></div>
1165 </div>
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>
1167
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>
1170 </pre></div>
1171 </div>
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">&#39;1 2 [3] [4] b&#39;</span><span class="p">)</span>
1173 </pre></div>
1174 </div>
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>
1183 </pre></div>
1184 </div>
1185 </div>
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>
1189 </pre></div>
1190 </div>
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">&#39;3 [0 &gt;] [dup --] while&#39;</span><span class="p">)</span>
1192 </pre></div>
1193 </div>
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>
1195 </pre></div>
1196 </div>
1197 </div>
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">&#39;[x] help&#39;</span><span class="p">)</span>
1201 </pre></div>
1202 </div>
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>
1204
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>
1208 </pre></div>
1209 </div>
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">&#39;1 [2] [i 3] x&#39;</span><span class="p">)</span>  <span class="c1"># Kind of a pointless example.</span>
1211 </pre></div>
1212 </div>
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>
1223 </pre></div>
1224 </div>
1225 </div>
1226 </div>
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**
1230 *arithmetic*</a>
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">&#39;[] void&#39;</span><span class="p">)</span>
1234 </pre></div>
1235 </div>
1236 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kc">False</span>
1237 </pre></div>
1238 </div>
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">&#39;[[]] void&#39;</span><span class="p">)</span>
1240 </pre></div>
1241 </div>
1242 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kc">True</span>
1243 </pre></div>
1244 </div>
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">&#39;[[][[]]] void&#39;</span><span class="p">)</span>
1246 </pre></div>
1247 </div>
1248 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kc">True</span>
1249 </pre></div>
1250 </div>
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">&#39;[[[]][[][]]] void&#39;</span><span class="p">)</span>
1252 </pre></div>
1253 </div>
1254 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kc">False</span>
1255 </pre></div>
1256 </div>
1257 </div>
1258 </div>
1259
1260
1261           </div>
1262         </div>
1263       </div>
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>
1267   <ul>
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&lt;</span></code> <code class="docutils literal notranslate"><span class="pre">rolldown</span></code> <code class="docutils literal notranslate"><span class="pre">roll&gt;</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>
1278 </ul>
1279 </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>
1292 </ul>
1293 </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">&lt;&lt;</span></code> <code class="docutils literal notranslate"><span class="pre">lshift</span></code> <code class="docutils literal notranslate"><span class="pre">&gt;&gt;</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>
1312 </ul>
1313 </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">&amp;</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">&lt;&gt;</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>
1319 </ul>
1320 </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>
1325 </ul>
1326 </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>
1346 </ul>
1347 </li>
1348 <li><a class="reference internal" href="#void"><code class="docutils literal notranslate"><span class="pre">void</span></code></a></li>
1349 </ul>
1350 </li>
1351 </ul>
1352 <div class="relations">
1353 <h3>Related Topics</h3>
1354 <ul>
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>
1358   </ul></li>
1359 </ul>
1360 </div>
1361   <div role="note" aria-label="source link">
1362     <h3>This Page</h3>
1363     <ul class="this-page-menu">
1364       <li><a href="_sources/lib.rst.txt"
1365             rel="nofollow">Show Source</a></li>
1366     </ul>
1367    </div>
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" />
1376     </form>
1377     </div>
1378 </div>
1379 <script type="text/javascript">$('#searchbox').show(0);</script>
1380         </div>
1381       </div>
1382       <div class="clearer"></div>
1383     </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" />
1387 </a>
1388 <br />
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.
1391     </div>
1392
1393   </body>
1394 </html>