From 401cf4a444fbdc7e085eafe04171f9e2bbdc671e Mon Sep 17 00:00:00 2001 From: Marshall Lochbaum Date: Sat, 6 Nov 2021 12:13:03 -0400 Subject: =?UTF-8?q?Link=20to=20Ad=C3=A1m's=20style=20guide=20as=20the=20so?= =?UTF-8?q?urce=20of=20BQN's=20name=20role=20system?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/commentary/history.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'docs/commentary') diff --git a/docs/commentary/history.html b/docs/commentary/history.html index 22197c09..77ebec7f 100644 --- a/docs/commentary/history.html +++ b/docs/commentary/history.html @@ -215,7 +215,7 @@

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.

+

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. Although I considered swapping subjects and functions, I ended up using exactly the conventions of his APL style guide.

Headers

The idea of dfn headers is very common in the APL community, to the extent that it's hard to say which proposals lead to the form now used in BQN. A+ has headers which are similar but go outside the braces, and BQN headers aren't all that different from tradfn headers either. I found when creating BQN2NGN that ngn/apl allows dfns to include a monadic and dyadic case, separated by a semicolon. Some time later I realized that the ability to include multiple bodies is very powerful with headers because it enables a primitive sort of pattern matching, something I already wanted to squeeze into the language. I discussed this with dzaima, who added header support to dzaima/BQN almost immediately and was thus able to investigate the details of the format.

Group

-- cgit v1.2.3