diff options
| author | Marshall Lochbaum <mwlochbaum@gmail.com> | 2021-03-24 22:41:38 -0400 |
|---|---|---|
| committer | Marshall Lochbaum <mwlochbaum@gmail.com> | 2021-03-24 22:41:38 -0400 |
| commit | 46e989035fa921a5a32169cc0a9b897ec313cc2e (patch) | |
| tree | d92737c676f75ef4e752cff095b36fe20a5dfe09 /docs/spec/grammar.html | |
| parent | 51ddc6a0797452b0f4ae977133038ce2439fbead (diff) | |
Specify function Undo headers
Diffstat (limited to 'docs/spec/grammar.html')
| -rw-r--r-- | docs/spec/grammar.html | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/docs/spec/grammar.html b/docs/spec/grammar.html index dca88643..46509c05 100644 --- a/docs/spec/grammar.html +++ b/docs/spec/grammar.html @@ -73,9 +73,15 @@ <span class='Function'>FuncHead</span> <span class='Function'>=</span> <span class='Value'>headW?</span> <span class='Paren'>(</span> <span class='Function'>F</span> <span class='Function'>|</span> <span class='String'>"𝕊"</span> <span class='Paren'>)</span> <span class='Value'>headX</span> <span class='Function'>|</span> <span class='Value'>sl</span> <span class='Function'>|</span> <span class='String'>"("</span> <span class='Value'>subExpr</span> <span class='String'>")"</span> <span class='Function'>|</span> <span class='Value'>brSub</span> <span class='Function'>|</span> <span class='Value'>list</span> <span class='Comment'># subject, </span> <span class='Function'>|</span> <span class='Function'>ANY</span> <span class='Paren'>(</span> <span class='String'>"‿"</span> <span class='Function'>ANY</span> <span class='Paren'>)</span><span class='Function'>+</span> <span class='Comment'># but not s -</span><span class='Modifier'>_m1Head</span> <span class='Function'>=</span> <span class='Value'>headW?</span> <span class='Function'>Mod1H1</span> <span class='Value'>headX</span> +</span> <span class='Function'>|</span> <span class='Function'>UndoHead</span> +<span class='Modifier'>_m1Head</span> <span class='Function'>=</span> <span class='Value'>headW?</span> <span class='Function'>Mod1H1</span> <span class='Value'>headX</span> <span class='Modifier2'>_m2Head_</span> <span class='Function'>=</span> <span class='Value'>headW?</span> <span class='Function'>Mod2H1</span> <span class='Value'>headX</span> </pre> +<p>Additionally, an inference header doesn't affect evaluation of the function, but describes how an inferred property (<a href="inferred.html#undo">Undo</a>) should be computed. Here <code><span class='String'>"˜"</span></code> and <code><span class='String'>"⁼"</span></code> are both specific instances of the <code><span class='Modifier'>_ml</span></code> token.</p> +<pre><span class='Function'>UndoHead</span> <span class='Function'>=</span> <span class='Value'>headW?</span> <span class='Paren'>(</span> <span class='Function'>F</span> <span class='Function'>|</span> <span class='String'>"𝕊"</span> <span class='Paren'>)</span> <span class='String'>"⁼"</span> <span class='Value'>headX</span> + <span class='Function'>|</span> <span class='Value'>headW</span> <span class='Paren'>(</span> <span class='Function'>F</span> <span class='Function'>|</span> <span class='String'>"𝕊"</span> <span class='Paren'>)</span> <span class='String'>"˜"</span> <span class='String'>"⁼"</span> <span class='Value'>headX</span> + <span class='Function'>|</span> <span class='Paren'>(</span> <span class='Function'>F</span> <span class='Function'>|</span> <span class='String'>"𝕊"</span> <span class='Paren'>)</span> <span class='String'>"˜"</span><span class='Value'>?</span> <span class='String'>"⁼"</span> +</pre> <p>A braced block contains bodies, which are lists of statements, separated by semicolons and possibly preceded by headers, which are separated from the body with a colon. Multiple bodies allow different handling for various cases, which are pattern-matched by headers. For an immediate block there are no inputs, so there can only be one possible case and one body. Functions and modifiers allow any number of "matched" bodies, with headers that have arguments, followed by at most two "main" bodies with either no headers or headers without arguments. If there is one main body, it is ambivalent, but two main bodies refer to the monadic and dyadic cases.</p> <pre><span class='Function'>BODY</span> <span class='Function'>=</span> <span class='Function'>PROGRAM</span> <span class='Function'>FCase</span> <span class='Function'>=</span> <span class='Separator'>⋄</span><span class='Value'>?</span> <span class='Function'>FuncHead</span> <span class='String'>":"</span> <span class='Function'>BODY</span> |
