Skip to content

Commit 5dfa8e9

Browse files
committed
docs: verify queries + operations docs against real execution
- queries-select: fix prose reference to removed cols: syntax - queries-joins: left-join shows 0 for unmatched i64, not blank - queries-pivot: fix avg output (149.5/152.0 not 149.5/152), replace broken select+scan/iasc window examples with standalone equivalents, fix grouped window to use by: Sym (not by: {Sym: Sym}) and cols: syntax - operations-math: remove nonexistent abs/sqrt/drop, fix div output (3.0 not 3.333), round/floor/ceil return floats, booleans are true/false not 1b/0b, within takes (vec [lo hi]) not (x lo hi), take is (take vec n), xbar is (xbar vec n), filter takes mask not predicate fn, apply takes args directly, med returns float - operations-string: remove nonexistent upper/lower/strlen/trim/substr/ replace/ilike builtins (DAG-only), fix concat to binary, like uses glob wildcards (*/?) not SQL (%), format uses % placeholder not {}
1 parent d2b3b7c commit 5dfa8e9

5 files changed

Lines changed: 65 additions & 204 deletions

File tree

website/docs/operations-math.html

Lines changed: 28 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ <h2 id="arithmetic">Arithmetic</h2>
134134
<span class="fn-type">atomic</span>
135135
</div>
136136
<div class="fn-desc">Division. Integer division for integer arguments, float division otherwise.</div>
137-
<div class="fn-example">(<span class="hl-fn">/</span> <span class="hl-num">10</span> <span class="hl-num">3</span>) <span class="hl-comment">; 3</span><br>(<span class="hl-fn">/</span> <span class="hl-num">10.0</span> <span class="hl-num">3</span>) <span class="hl-comment">; 3.333...</span></div>
137+
<div class="fn-example">(<span class="hl-fn">/</span> <span class="hl-num">10</span> <span class="hl-num">3</span>) <span class="hl-comment">; 3</span><br>(<span class="hl-fn">/</span> <span class="hl-num">10.0</span> <span class="hl-num">3</span>) <span class="hl-comment">; 3.0</span></div>
138138
</div>
139139

140140
<div class="fn-card">
@@ -155,31 +155,13 @@ <h2 id="arithmetic">Arithmetic</h2>
155155
<div class="fn-example">(<span class="hl-fn">neg</span> <span class="hl-num">5</span>) <span class="hl-comment">; -5</span><br>(<span class="hl-fn">neg</span> [<span class="hl-num">1</span> <span class="hl-num">-2</span> <span class="hl-num">3</span>]) <span class="hl-comment">; [-1 2 -3]</span></div>
156156
</div>
157157

158-
<div class="fn-card">
159-
<div class="fn-card-header">
160-
<span class="fn-name">(abs x)</span>
161-
<span class="fn-type">atomic</span>
162-
</div>
163-
<div class="fn-desc">Absolute value.</div>
164-
<div class="fn-example">(<span class="hl-fn">abs</span> <span class="hl-num">-7</span>) <span class="hl-comment">; 7</span><br>(<span class="hl-fn">abs</span> [<span class="hl-num">-3</span> <span class="hl-num">0</span> <span class="hl-num">5</span>]) <span class="hl-comment">; [3 0 5]</span></div>
165-
</div>
166-
167-
<div class="fn-card">
168-
<div class="fn-card-header">
169-
<span class="fn-name">(sqrt x)</span>
170-
<span class="fn-type">atomic</span>
171-
</div>
172-
<div class="fn-desc">Square root. Returns float.</div>
173-
<div class="fn-example">(<span class="hl-fn">sqrt</span> <span class="hl-num">16</span>) <span class="hl-comment">; 4.0</span><br>(<span class="hl-fn">sqrt</span> [<span class="hl-num">4</span> <span class="hl-num">9</span> <span class="hl-num">25</span>]) <span class="hl-comment">; [2.0 3.0 5.0]</span></div>
174-
</div>
175-
176158
<div class="fn-card">
177159
<div class="fn-card-header">
178160
<span class="fn-name">(round x)</span>
179161
<span class="fn-type">atomic</span>
180162
</div>
181163
<div class="fn-desc">Round to nearest integer.</div>
182-
<div class="fn-example">(<span class="hl-fn">round</span> <span class="hl-num">3.7</span>) <span class="hl-comment">; 4</span><br>(<span class="hl-fn">round</span> [<span class="hl-num">1.2</span> <span class="hl-num">2.5</span> <span class="hl-num">3.8</span>]) <span class="hl-comment">; [1 3 4]</span></div>
164+
<div class="fn-example">(<span class="hl-fn">round</span> <span class="hl-num">3.7</span>) <span class="hl-comment">; 4.0</span><br>(<span class="hl-fn">round</span> [<span class="hl-num">1.2</span> <span class="hl-num">2.5</span> <span class="hl-num">3.8</span>]) <span class="hl-comment">; [1.0 3.0 4.0]</span></div>
183165
</div>
184166

185167
<div class="fn-card">
@@ -188,7 +170,7 @@ <h2 id="arithmetic">Arithmetic</h2>
188170
<span class="fn-type">atomic</span>
189171
</div>
190172
<div class="fn-desc">Round down to nearest integer.</div>
191-
<div class="fn-example">(<span class="hl-fn">floor</span> <span class="hl-num">3.9</span>) <span class="hl-comment">; 3</span></div>
173+
<div class="fn-example">(<span class="hl-fn">floor</span> <span class="hl-num">3.9</span>) <span class="hl-comment">; 3.0</span></div>
192174
</div>
193175

194176
<div class="fn-card">
@@ -197,7 +179,7 @@ <h2 id="arithmetic">Arithmetic</h2>
197179
<span class="fn-type">atomic</span>
198180
</div>
199181
<div class="fn-desc">Round up to nearest integer.</div>
200-
<div class="fn-example">(<span class="hl-fn">ceil</span> <span class="hl-num">3.1</span>) <span class="hl-comment">; 4</span></div>
182+
<div class="fn-example">(<span class="hl-fn">ceil</span> <span class="hl-num">3.1</span>) <span class="hl-comment">; 4.0</span></div>
201183
</div>
202184

203185
<!-- ============================================================ -->
@@ -210,7 +192,7 @@ <h2 id="comparison">Comparison</h2>
210192
<span class="fn-type">atomic</span>
211193
</div>
212194
<div class="fn-desc">Equal. Works on all types including strings and symbols.</div>
213-
<div class="fn-example">(<span class="hl-fn">==</span> <span class="hl-num">3</span> <span class="hl-num">3</span>) <span class="hl-comment">; 1b</span><br>(<span class="hl-fn">==</span> [<span class="hl-num">1</span> <span class="hl-num">2</span> <span class="hl-num">3</span>] <span class="hl-num">2</span>) <span class="hl-comment">; [0b 1b 0b]</span></div>
195+
<div class="fn-example">(<span class="hl-fn">==</span> <span class="hl-num">3</span> <span class="hl-num">3</span>) <span class="hl-comment">; true</span><br>(<span class="hl-fn">==</span> [<span class="hl-num">1</span> <span class="hl-num">2</span> <span class="hl-num">3</span>] <span class="hl-num">2</span>) <span class="hl-comment">; [false true false]</span></div>
214196
</div>
215197

216198
<div class="fn-card">
@@ -219,7 +201,7 @@ <h2 id="comparison">Comparison</h2>
219201
<span class="fn-type">atomic</span>
220202
</div>
221203
<div class="fn-desc">Not equal.</div>
222-
<div class="fn-example">(<span class="hl-fn">!=</span> <span class="hl-num">3</span> <span class="hl-num">4</span>) <span class="hl-comment">; 1b</span></div>
204+
<div class="fn-example">(<span class="hl-fn">!=</span> <span class="hl-num">3</span> <span class="hl-num">4</span>) <span class="hl-comment">; true</span></div>
223205
</div>
224206

225207
<div class="fn-card">
@@ -228,7 +210,7 @@ <h2 id="comparison">Comparison</h2>
228210
<span class="fn-type">atomic</span>
229211
</div>
230212
<div class="fn-desc">Less than.</div>
231-
<div class="fn-example">(<span class="hl-fn">&lt;</span> <span class="hl-num">3</span> <span class="hl-num">5</span>) <span class="hl-comment">; 1b</span><br>(<span class="hl-fn">&lt;</span> [<span class="hl-num">1</span> <span class="hl-num">5</span> <span class="hl-num">3</span>] <span class="hl-num">4</span>) <span class="hl-comment">; [1b 0b 1b]</span></div>
213+
<div class="fn-example">(<span class="hl-fn">&lt;</span> <span class="hl-num">3</span> <span class="hl-num">5</span>) <span class="hl-comment">; true</span><br>(<span class="hl-fn">&lt;</span> [<span class="hl-num">1</span> <span class="hl-num">5</span> <span class="hl-num">3</span>] <span class="hl-num">4</span>) <span class="hl-comment">; [true false true]</span></div>
232214
</div>
233215

234216
<div class="fn-card">
@@ -237,7 +219,7 @@ <h2 id="comparison">Comparison</h2>
237219
<span class="fn-type">atomic</span>
238220
</div>
239221
<div class="fn-desc">Less than or equal.</div>
240-
<div class="fn-example">(<span class="hl-fn">&lt;=</span> <span class="hl-num">3</span> <span class="hl-num">3</span>) <span class="hl-comment">; 1b</span></div>
222+
<div class="fn-example">(<span class="hl-fn">&lt;=</span> <span class="hl-num">3</span> <span class="hl-num">3</span>) <span class="hl-comment">; true</span></div>
241223
</div>
242224

243225
<div class="fn-card">
@@ -246,7 +228,7 @@ <h2 id="comparison">Comparison</h2>
246228
<span class="fn-type">atomic</span>
247229
</div>
248230
<div class="fn-desc">Greater than.</div>
249-
<div class="fn-example">(<span class="hl-fn">&gt;</span> <span class="hl-num">5</span> <span class="hl-num">3</span>) <span class="hl-comment">; 1b</span></div>
231+
<div class="fn-example">(<span class="hl-fn">&gt;</span> <span class="hl-num">5</span> <span class="hl-num">3</span>) <span class="hl-comment">; true</span></div>
250232
</div>
251233

252234
<div class="fn-card">
@@ -255,16 +237,15 @@ <h2 id="comparison">Comparison</h2>
255237
<span class="fn-type">atomic</span>
256238
</div>
257239
<div class="fn-desc">Greater than or equal.</div>
258-
<div class="fn-example">(<span class="hl-fn">&gt;=</span> <span class="hl-num">5</span> <span class="hl-num">5</span>) <span class="hl-comment">; 1b</span></div>
240+
<div class="fn-example">(<span class="hl-fn">&gt;=</span> <span class="hl-num">5</span> <span class="hl-num">5</span>) <span class="hl-comment">; true</span></div>
259241
</div>
260242

261243
<div class="fn-card">
262244
<div class="fn-card-header">
263-
<span class="fn-name">(within x lo hi)</span>
264-
<span class="fn-type">atomic</span>
245+
<span class="fn-name">(within vec [lo hi])</span>
265246
</div>
266-
<div class="fn-desc">Check if value is within a range (inclusive).</div>
267-
<div class="fn-example">(<span class="hl-fn">within</span> <span class="hl-num">5</span> <span class="hl-num">3</span> <span class="hl-num">7</span>) <span class="hl-comment">; 1b</span><br>(<span class="hl-fn">within</span> [<span class="hl-num">1</span> <span class="hl-num">5</span> <span class="hl-num">9</span>] <span class="hl-num">3</span> <span class="hl-num">7</span>) <span class="hl-comment">; [0b 1b 0b]</span></div>
247+
<div class="fn-desc">Check if each element of a vector is within a range (inclusive). The second argument is a 2-element vector <code>[lo hi]</code>.</div>
248+
<div class="fn-example">(<span class="hl-fn">within</span> [<span class="hl-num">1</span> <span class="hl-num">5</span> <span class="hl-num">9</span>] [<span class="hl-num">3</span> <span class="hl-num">7</span>]) <span class="hl-comment">; [false true false]</span></div>
268249
</div>
269250

270251
<!-- ============================================================ -->
@@ -294,7 +275,7 @@ <h2 id="logic">Logic</h2>
294275
<span class="fn-type">atomic</span>
295276
</div>
296277
<div class="fn-desc">Logical NOT. Flips boolean values.</div>
297-
<div class="fn-example">(<span class="hl-fn">not</span> <span class="hl-bool">1b</span>) <span class="hl-comment">; 0b</span><br>(<span class="hl-fn">not</span> [<span class="hl-bool">1b</span> <span class="hl-bool">0b</span> <span class="hl-bool">1b</span>]) <span class="hl-comment">; [0b 1b 0b]</span></div>
278+
<div class="fn-example">(<span class="hl-fn">not</span> true) <span class="hl-comment">; false</span><br>(<span class="hl-fn">not</span> [true false true]) <span class="hl-comment">; [false true false]</span></div>
298279
</div>
299280

300281
<!-- ============================================================ -->
@@ -352,7 +333,7 @@ <h2 id="aggregation">Aggregation</h2>
352333
<span class="fn-type">aggregate</span>
353334
</div>
354335
<div class="fn-desc">Median value.</div>
355-
<div class="fn-example">(<span class="hl-fn">med</span> [<span class="hl-num">1</span> <span class="hl-num">3</span> <span class="hl-num">5</span> <span class="hl-num">7</span> <span class="hl-num">9</span>]) <span class="hl-comment">; 5</span></div>
336+
<div class="fn-example">(<span class="hl-fn">med</span> [<span class="hl-num">1</span> <span class="hl-num">3</span> <span class="hl-num">5</span> <span class="hl-num">7</span> <span class="hl-num">9</span>]) <span class="hl-comment">; 5.0</span></div>
356337
</div>
357338

358339
<div class="fn-card">
@@ -465,18 +446,10 @@ <h2 id="generation">Generation</h2>
465446

466447
<div class="fn-card">
467448
<div class="fn-card-header">
468-
<span class="fn-name">(take n x)</span>
449+
<span class="fn-name">(take x n)</span>
469450
</div>
470451
<div class="fn-desc">Take the first <code>n</code> elements from a vector, or repeat/cycle <code>x</code> to length <code>n</code>.</div>
471-
<div class="fn-example">(<span class="hl-fn">take</span> <span class="hl-num">3</span> [<span class="hl-num">10</span> <span class="hl-num">20</span> <span class="hl-num">30</span> <span class="hl-num">40</span>]) <span class="hl-comment">; [10 20 30]</span><br>(<span class="hl-fn">take</span> [<span class="hl-str">A</span> <span class="hl-str">B</span>] <span class="hl-num">5</span>) <span class="hl-comment">; [A B A B A]</span></div>
472-
</div>
473-
474-
<div class="fn-card">
475-
<div class="fn-card-header">
476-
<span class="fn-name">(drop n x)</span>
477-
</div>
478-
<div class="fn-desc">Drop the first <code>n</code> elements from a vector.</div>
479-
<div class="fn-example">(<span class="hl-fn">drop</span> <span class="hl-num">2</span> [<span class="hl-num">10</span> <span class="hl-num">20</span> <span class="hl-num">30</span> <span class="hl-num">40</span>]) <span class="hl-comment">; [30 40]</span></div>
452+
<div class="fn-example">(<span class="hl-fn">take</span> [<span class="hl-num">10</span> <span class="hl-num">20</span> <span class="hl-num">30</span> <span class="hl-num">40</span>] <span class="hl-num">3</span>) <span class="hl-comment">; [10 20 30]</span><br>(<span class="hl-fn">take</span> [<span class="hl-str">A</span> <span class="hl-str">B</span>] <span class="hl-num">5</span>) <span class="hl-comment">; [A B A B A]</span></div>
480453
</div>
481454

482455
<div class="fn-card">
@@ -492,7 +465,7 @@ <h2 id="generation">Generation</h2>
492465
<span class="fn-name">(where x)</span>
493466
</div>
494467
<div class="fn-desc">Return indices where the boolean vector is true.</div>
495-
<div class="fn-example">(<span class="hl-fn">where</span> [<span class="hl-bool">0b</span> <span class="hl-bool">1b</span> <span class="hl-bool">0b</span> <span class="hl-bool">1b</span>]) <span class="hl-comment">; [1 3]</span><br>(<span class="hl-fn">where</span> (<span class="hl-fn">&gt;</span> [<span class="hl-num">10</span> <span class="hl-num">5</span> <span class="hl-num">20</span>] <span class="hl-num">8</span>)) <span class="hl-comment">; [0 2]</span></div>
468+
<div class="fn-example">(<span class="hl-fn">where</span> [false true false true]) <span class="hl-comment">; [1 3]</span><br>(<span class="hl-fn">where</span> (<span class="hl-fn">&gt;</span> [<span class="hl-num">10</span> <span class="hl-num">5</span> <span class="hl-num">20</span>] <span class="hl-num">8</span>)) <span class="hl-comment">; [0 2]</span></div>
496469
</div>
497470

498471
<div class="fn-card">
@@ -505,10 +478,10 @@ <h2 id="generation">Generation</h2>
505478

506479
<div class="fn-card">
507480
<div class="fn-card-header">
508-
<span class="fn-name">(xbar n x)</span>
481+
<span class="fn-name">(xbar x n)</span>
509482
</div>
510483
<div class="fn-desc">Round each element down to the nearest multiple of <code>n</code> (bucketing).</div>
511-
<div class="fn-example">(<span class="hl-fn">xbar</span> <span class="hl-num">5</span> [<span class="hl-num">3</span> <span class="hl-num">7</span> <span class="hl-num">12</span> <span class="hl-num">18</span>]) <span class="hl-comment">; [0 5 10 15]</span></div>
484+
<div class="fn-example">(<span class="hl-fn">xbar</span> [<span class="hl-num">3</span> <span class="hl-num">7</span> <span class="hl-num">12</span> <span class="hl-num">18</span>] <span class="hl-num">5</span>) <span class="hl-comment">; [0 5 10 15]</span></div>
512485
</div>
513486

514487
<!-- ============================================================ -->
@@ -541,18 +514,18 @@ <h2 id="higher-order">Higher-order Functions</h2>
541514

542515
<div class="fn-card">
543516
<div class="fn-card-header">
544-
<span class="fn-name">(apply f args)</span>
517+
<span class="fn-name">(apply f ...args)</span>
545518
</div>
546-
<div class="fn-desc">Apply function <code>f</code> with a list of arguments.</div>
547-
<div class="fn-example">(<span class="hl-fn">apply</span> <span class="hl-fn">+</span> [<span class="hl-num">1</span> <span class="hl-num">2</span>]) <span class="hl-comment">; 3</span></div>
519+
<div class="fn-desc">Apply function <code>f</code> to the given arguments.</div>
520+
<div class="fn-example">(<span class="hl-fn">apply</span> <span class="hl-fn">+</span> <span class="hl-num">1</span> <span class="hl-num">2</span>) <span class="hl-comment">; 3</span></div>
548521
</div>
549522

550523
<div class="fn-card">
551524
<div class="fn-card-header">
552-
<span class="fn-name">(filter f x)</span>
525+
<span class="fn-name">(filter vec mask)</span>
553526
</div>
554-
<div class="fn-desc">Keep elements of <code>x</code> where <code>f</code> returns true.</div>
555-
<div class="fn-example">(<span class="hl-fn">filter</span> (<span class="hl-kw">fn</span> [x] (<span class="hl-fn">&gt;</span> x <span class="hl-num">2</span>)) [<span class="hl-num">1</span> <span class="hl-num">2</span> <span class="hl-num">3</span> <span class="hl-num">4</span>]) <span class="hl-comment">; [3 4]</span></div>
527+
<div class="fn-desc">Keep elements of <code>vec</code> where the boolean <code>mask</code> is true.</div>
528+
<div class="fn-example">(<span class="hl-fn">filter</span> [<span class="hl-num">1</span> <span class="hl-num">2</span> <span class="hl-num">3</span> <span class="hl-num">4</span>] (<span class="hl-fn">&gt;</span> [<span class="hl-num">1</span> <span class="hl-num">2</span> <span class="hl-num">3</span> <span class="hl-num">4</span>] <span class="hl-num">2</span>)) <span class="hl-comment">; [3 4]</span></div>
556529
</div>
557530

558531
<div class="fn-card">
@@ -575,7 +548,7 @@ <h2 id="reference">Quick Reference Table</h2>
575548
<tbody>
576549
<tr>
577550
<td><strong>Arithmetic</strong></td>
578-
<td><code>+</code> <code>-</code> <code>*</code> <code>/</code> <code>%</code> <code>neg</code> <code>abs</code> <code>sqrt</code> <code>round</code> <code>floor</code> <code>ceil</code></td>
551+
<td><code>+</code> <code>-</code> <code>*</code> <code>/</code> <code>%</code> <code>neg</code> <code>round</code> <code>floor</code> <code>ceil</code></td>
579552
</tr>
580553
<tr>
581554
<td><strong>Comparison</strong></td>
@@ -595,7 +568,7 @@ <h2 id="reference">Quick Reference Table</h2>
595568
</tr>
596569
<tr>
597570
<td><strong>Generation</strong></td>
598-
<td><code>til</code> <code>take</code> <code>drop</code> <code>reverse</code> <code>where</code> <code>find</code> <code>xbar</code></td>
571+
<td><code>til</code> <code>take</code> <code>reverse</code> <code>where</code> <code>find</code> <code>xbar</code></td>
599572
</tr>
600573
<tr>
601574
<td><strong>Higher-order</strong></td>

0 commit comments

Comments
 (0)