aboutsummaryrefslogtreecommitdiff
path: root/docs/commentary
diff options
context:
space:
mode:
authorMarshall Lochbaum <mwlochbaum@gmail.com>2021-05-18 22:11:16 -0400
committerMarshall Lochbaum <mwlochbaum@gmail.com>2021-05-18 22:11:16 -0400
commitb9ad22734b0d27709f6733d3d12a831ea28bc82c (patch)
treea2f654ae533edb16e2c8ba6f4918686ac514a49e /docs/commentary
parentec3eef151f1bf3d03237110857a4d9e94eab83c4 (diff)
History of Assert (!)
Diffstat (limited to 'docs/commentary')
-rw-r--r--docs/commentary/history.html9
1 files changed, 9 insertions, 0 deletions
diff --git a/docs/commentary/history.html b/docs/commentary/history.html
index 1e4e2aab..8b93d2f9 100644
--- a/docs/commentary/history.html
+++ b/docs/commentary/history.html
@@ -130,6 +130,13 @@
<td></td>
</tr>
<tr>
+<td align="right"></td>
+<td></td>
+<td>Rogers</td>
+<td>Assert primitive <code><span class='Function'>!</span></code></td>
+<td></td>
+</tr>
+<tr>
<td align="right">-05</td>
<td><a href="https://aplwiki.com/wiki/Ngn/apl">ngn/apl</a></td>
<td>Nikolov</td>
@@ -205,6 +212,8 @@
<p>I picked out the ligature character <code><span class='Ligature'>‿</span></code> between YAG meetings, but I think Richard Park was most responsible for the idea of a &quot;shortcut&quot; list notation.</p>
<h4 id="double-struck-special-names">Double-struck special names</h4>
<p>There was a lot of discussion about names for arguments at YAG (no one liked alpha and omega); I think Nathan Rogers suggested using Unicode's mathematical variants of latin letters and I picked out the double-struck ones. My impression is that we were approaching a general concensus that &quot;w&quot; and &quot;x&quot; were the best of several bad choices of argument letters, but that I was the first to commit to them.</p>
+<h4 id="assert-primitive">Assert primitive</h4>
+<p>Nathan Rogers suggested that assertion should be made a primitive to elevate it to a basic part of the language. I used J's <code><span class='Value'>assert</span></code> often enough for this idea to make sense immediately, but I think it was new to me. He suggested the dagger character; I changed this to the somewhat similar-looking <code><span class='Function'>!</span></code>. The error-trapping modifier <code><span class='Modifier2'>⎊</span></code> is identical to J's <code><span class='Value'>::</span></code>, but J only has the function <code><span class='Value'>[:</span></code> to unconditionally throw an error, with no way to set a message.</p>
<h4 id="context-free-grammar">Context-free grammar</h4>
<p>In YAG meetings, I suggested adopting <a href="https://aplwiki.com/wiki/APL%5Civ">APL\iv</a>'s convention that variable case must match variable type in order to achieve a context-free grammar. Adám, a proponent of case-insensitive names, pointed out that the case might indicate the type the programmer wanted to use instead of the value's type, creating cross roles.</p>
<h4 id="headers">Headers</h4>