From b9ad22734b0d27709f6733d3d12a831ea28bc82c Mon Sep 17 00:00:00 2001 From: Marshall Lochbaum Date: Tue, 18 May 2021 22:11:16 -0400 Subject: History of Assert (!) --- commentary/history.md | 5 +++++ docs/commentary/history.html | 9 +++++++++ 2 files changed, 14 insertions(+) diff --git a/commentary/history.md b/commentary/history.md index 5963d19f..5e8e172a 100644 --- a/commentary/history.md +++ b/commentary/history.md @@ -35,6 +35,7 @@ The table documents when I encountered features or interesting decisions in BQN. | | | Brudzewsky | Cross-roles | | | w/ Park? | Ligature `‿` | | | w/ Rogers | Double-struck special names +| | | Rogers | Assert primitive `!` | -05 | [ngn/apl](https://aplwiki.com/wiki/Ngn/apl) | Nikolov | Multiple function bodies `;` | -06 | BQN | | Group (`⊔`) | [0](https://chat.stackexchange.com/transcript/52405?m=54600976#54600976), [1](https://chat.stackexchange.com/transcript/message/55456874#55456874) | | | | Nothing (`·`) | [0](https://chat.stackexchange.com/transcript/message/54703617#54703617) @@ -67,6 +68,10 @@ I picked out the ligature character `‿` between YAG meetings, but I think Rich 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 "w" and "x" were the best of several bad choices of argument letters, but that I was the first to commit to them. +#### Assert primitive + +Nathan Rogers suggested that assertion should be made a primitive to elevate it to a basic part of the language. I used J's `assert` 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 `!`. The error-trapping modifier `⎊` is identical to J's `::`, but J only has the function `[:` to unconditionally throw an error, with no way to set a message. + #### Context-free grammar In YAG meetings, I suggested adopting [APL\iv](https://aplwiki.com/wiki/APL%5Civ)'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. 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 @@ + + +Rogers +Assert primitive ! + + + -05 ngn/apl Nikolov @@ -205,6 +212,8 @@

I picked out the ligature character between YAG meetings, but I think Richard Park was most responsible for the idea of a "shortcut" list notation.

Double-struck special names

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 "w" and "x" were the best of several bad choices of argument letters, but that I was the first to commit to them.

+

Assert primitive

+

Nathan Rogers suggested that assertion should be made a primitive to elevate it to a basic part of the language. I used J's assert 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 !. The error-trapping modifier is identical to J's ::, but J only has the function [: to unconditionally throw an error, with no way to set a message.

Context-free grammar

In YAG meetings, I suggested adopting APL\iv'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.

Headers

-- cgit v1.2.3