aboutsummaryrefslogtreecommitdiff
path: root/docs/commentary
diff options
context:
space:
mode:
authorMarshall Lochbaum <mwlochbaum@gmail.com>2022-02-05 18:00:29 -0500
committerMarshall Lochbaum <mwlochbaum@gmail.com>2022-02-05 18:00:29 -0500
commit776bdd6ec954a123b22df1f4de06bdd6c3edd18c (patch)
treea7733c1522fa58485a66872206e4150f3bb9d612 /docs/commentary
parent4c95f1b8a83993eda4545a2c81806b1b14f37053 (diff)
Doing TAO comparisons gets easier with Enlist
Diffstat (limited to 'docs/commentary')
-rw-r--r--docs/commentary/problems.html4
1 files changed, 2 insertions, 2 deletions
diff --git a/docs/commentary/problems.html b/docs/commentary/problems.html
index 4199ddaa..f444638a 100644
--- a/docs/commentary/problems.html
+++ b/docs/commentary/problems.html
@@ -28,8 +28,6 @@
<p>This includes index-of-last, and searching starting at a particular index, when the desired result indices are to the array to be seached <em>before</em> it is modified. Given indices <code><span class='Value'>i</span></code> into an array <code><span class='Value'>๐•จ</span></code> (for example <code><span class='Function'>โŒฝโ†•โ‰ </span><span class='Value'>๐•จ</span></code> or <code><span class='Value'>a</span><span class='Function'>+โ†•</span><span class='Value'>b</span></code>), this section can be searched with <code><span class='Paren'>(</span><span class='Value'>i</span><span class='Function'>โˆพโ‰ </span><span class='Value'>๐•จ</span><span class='Paren'>)</span><span class='Function'>โŠ</span><span class='Modifier'>หœ</span><span class='Paren'>(</span><span class='Value'>i</span><span class='Function'>โŠ</span><span class='Value'>๐•จ</span><span class='Paren'>)</span><span class='Function'>โА</span><span class='Value'>๐•ฉ</span></code>. But this is clunky and difficult for the implementation to optimize.</p>
<h3 id="subtraction-division-and-span-are-backwards"><a class="header" href="#subtraction-division-and-span-are-backwards">Subtraction, division, and span are backwards</a></h3>
<p>The left argument feels much more like the primary one in these cases (indeed, this matches the typical left-to-right ordering of binary operators in mathematics). The commonly-paired <code><span class='Function'>โŒŠ</span><span class='Modifier2'>โˆ˜</span><span class='Function'>รท</span></code> and <code><span class='Function'>|</span></code> have opposite orders for this reason. Not really fixable; too much precedent.</p>
-<h3 id="cant-access-array-ordering-directly"><a class="header" href="#cant-access-array-ordering-directly">Can't access array ordering directly</a></h3>
-<p>Only <code><span class='Function'>โ‹โ’</span></code> use array ordering rather than just array equality or numeric ordering. Getting at the actual ordering to just compare two arrays is more difficult than it should be (but not <em>that</em> difficult: <code><span class='Function'>โฅŠ</span><span class='Modifier2'>โŠธ</span><span class='Function'>โ‹</span><span class='Modifier2'>โŒพ</span><span class='Function'>&lt;</span></code> is TAO <code><span class='Function'>โ‰ค</span></code>).</p>
<h3 id="nothing--interacts-strangely-with-before-and-after"><a class="header" href="#nothing--interacts-strangely-with-before-and-after">Nothing (<code><span class='Nothing'>ยท</span></code>) interacts strangely with Before and After</a></h3>
<p>Since <code><span class='Value'>๐•จ</span><span class='Function'>F</span><span class='Modifier2'>โŠธ</span><span class='Function'>G</span><span class='Value'>๐•ฉ</span></code> is <code><span class='Paren'>(</span><span class='Function'>F</span><span class='Value'>๐•จ</span><span class='Paren'>)</span><span class='Function'>G</span><span class='Value'>๐•ฉ</span></code> and <code><span class='Value'>๐•จ</span><span class='Function'>F</span><span class='Modifier2'>โŸœ</span><span class='Function'>G</span><span class='Value'>๐•ฉ</span></code> is <code><span class='Value'>๐•จ</span><span class='Function'>F</span> <span class='Function'>G</span><span class='Value'>๐•ฉ</span></code> in the dyadic case, we might expect these to devolve to <code><span class='Function'>G</span><span class='Value'>๐•ฉ</span></code> and <code><span class='Function'>F</span> <span class='Function'>G</span><span class='Value'>๐•ฉ</span></code> when <code><span class='Value'>๐•จ</span></code> is not present. Not so: instead <code><span class='Value'>๐•ฉ</span></code> is substituted for the missing <code><span class='Value'>๐•จ</span></code>. And Before and After are also the main places where a programmer might try to use <code><span class='Value'>๐•จ</span></code> as an operand, which doesn't work either (the right way is the train <code><span class='Value'>๐•จ</span><span class='Function'>FโŠข</span></code>). It's also a little strange that <code><span class='Value'>v</span> <span class='Function'>F</span><span class='Modifier'>หœ</span><span class='Nothing'>ยท</span></code> is <code><span class='Nothing'>ยท</span></code>, while <code><span class='Nothing'>ยท</span><span class='Function'>F</span> <span class='Value'>v</span></code> is <code><span class='Function'>F</span> <span class='Value'>v</span></code>.</p>
<h3 id="no-access-to-fast-high-precision-sum"><a class="header" href="#no-access-to-fast-high-precision-sum">No access to fast high-precision sum</a></h3>
@@ -51,6 +49,8 @@
<p>APL has it and BQN doesn't; after some experience it seems this causes few problems, and the extra effort required for the algorithms that do need it is negligible (anyway, it's better to be aware when your code relies on imprecise equality). APL and J also tolerate inexact indices and lengths, which is also something that could be supported.</p>
<h3 id="index-of-privileges-the-first-match"><a class="header" href="#index-of-privileges-the-first-match">Index Of privileges the first match</a></h3>
<p>It could be more sound to look at all matches, but using just the first one is too convenient. J has an index-of-last function; in BQN you have to reverse the left argument and then do arithmetic: <code><span class='Function'>โ‰ </span><span class='Modifier2'>โˆ˜</span><span class='Function'>โŠฃ-</span><span class='Number'>1</span><span class='Function'>+โŒฝ</span><span class='Modifier2'>โŠธ</span><span class='Function'>โА</span></code>.</p>
+<h3 id="cant-access-array-ordering-directly"><a class="header" href="#cant-access-array-ordering-directly">Can't access array ordering directly</a></h3>
+<p>Only <code><span class='Function'>โ‹โ’</span></code> use array ordering rather than just array equality or numeric ordering. Getting at the actual ordering to just compare two arrays is not hard but also not obvious: <code><span class='Function'>โ‹</span><span class='Modifier2'>โŒพ</span><span class='Function'>โ‹ˆ</span></code> is TAO <code><span class='Function'>โ‰ค</span></code>.</p>
<h3 id="glyphs-that-arent-great"><a class="header" href="#glyphs-that-arent-great">Glyphs that aren't great</a></h3>
<p>Blanket issue for unintuitive glyphs. Currently I find <code><span class='Function'>โฅŠโŠโŠ‘โАโŠ’โท</span><span class='Modifier'>โผ</span><span class='Modifier2'>โމโš‡</span></code> to not be particularly good fits for what they describe.</p>
<h3 id="cant-mix-define-and-modify-in-multiple-assignment"><a class="header" href="#cant-mix-define-and-modify-in-multiple-assignment">Can't mix define and modify in multiple assignment</a></h3>