diff options
| author | Marshall Lochbaum <mwlochbaum@gmail.com> | 2021-11-06 12:13:03 -0400 |
|---|---|---|
| committer | Marshall Lochbaum <mwlochbaum@gmail.com> | 2021-11-06 12:13:03 -0400 |
| commit | 401cf4a444fbdc7e085eafe04171f9e2bbdc671e (patch) | |
| tree | 9ad98e7a36e9ed715ffeac0fc428b19d9c29c418 /docs | |
| parent | 25da94bac66884a74a0f02e961a7165c8293a277 (diff) | |
Link to Adám's style guide as the source of BQN's name role system
Diffstat (limited to 'docs')
| -rw-r--r-- | docs/commentary/history.html | 2 |
1 files changed, 1 insertions, 1 deletions
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 @@ <h4 id="assert-primitive"><a class="header" href="#assert-primitive">Assert primitive</a></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"><a class="header" href="#context-free-grammar">Context-free grammar</a></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> +<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. Although I considered swapping subjects and functions, I ended up using exactly the conventions of his APL <a href="https://abrudz.github.io/style/#nc">style guide</a>.</p> <h4 id="headers"><a class="header" href="#headers">Headers</a></h4> <p>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.</p> <h4 id="group"><a class="header" href="#group">Group</a></h4> |
