As an update, I further updated the PTMD_STD nesting precedence table.

This time I consolidated any levels that I couldn't argue for being separate. Less is more after all. So now there are 17 levels instead of 23.

I also split the large group into 3; it should be fairly clear from looking at them as to how these naturally fell out.

After this, I would be more hard-pressed to consolidate further.

Feedback still appreciated, as previously mentioned!

-- Darren Duncan

============

PTMD_STD has 17 precedence levels when the C<catalog_abstraction_level>
pragma is C<rtn_inv_alt_syn>; if it is C<plain_rtn_inv> instead, then 13.5
of the levels can be eliminated, so then PTMD_STD has just 3.5; if it is
C<code_as_data> instead, then 2.5 more can be eliminated, leaving just 1.

Here we list the levels from "tightest" to "loosest", along with a few
examples of each level:

    Level            | Assoc | Examples
    -----------------+-------+---------------------------------------------
    Terms            | N/A   | Inf True Order:Same Down 42 3.14 -5/7 3*2^8
                     |       | F;'27E04' 'eek' foo "x" #`comment!`#
                     |       | {43,9,5} [1,2,3] {'Carrots'=>42} {11..20}
                     |       | $:{...} %:{...} @:{...} nlx.lib.MyType
                     |       | (1+2) myfunc(...) <Int> nlx.data.quux .age
    -----------------+-------+---------------------------------------------
    Postfix          | N/A   | f().a p.{...} r{...} x.[...] y[...] ++ -- i!
    -----------------+-------+---------------------------------------------
    Generic Prefix   | N/A   | || # #+ % @
    Currying Infix   | left  | assuming
    Exponentiation   | right | ^ exp ** log e** log-e
    Multiplicative   | left  | * / div mod intersect join times divideby
                     |       | where !where matching !matching compose
                     |       | intersect+
    Additive         | left  | + - |-| ~ ~# union exclude minus
                     |       | union+ union++ minus+ round
    Selecting Infix  | left  | as asserting min max //
    -----------------+-------+---------------------------------------------
    Comparison       | left  | <=> = != < > <= >= isa !isa like !like
                     |       | inside !inside holds !holds in !in has !has
                     |       | {<=} {!<=} {>=} {!>=} {<} {!<} {>} {!>}
                     |       | {<=}+ {!<=}+ {>=}+ {!>=}+ {<}+ {!<}+ {>}+ {!>}+
    -----------------+-------+---------------------------------------------
    Negation Prefix  | N/A   | not ! ¬
    Conjunction      | left  | and ∧ [<=>]
    Disjunction      | left  | or ∨ xor ⊻ ↮
    Implies          | left  | imp → nimp ↛ if ← nif ↚ nand ⊼ ↑ nor ⊽ ↓
    Equivalence      | left  | xnor ↔
    -----------------+-------+---------------------------------------------
    Shorting Infix   | right | ??!! if-else-expr given-when-def-expr
    Binding Infix    | right | ::=
    -----------------+-------+---------------------------------------------
    Assignment       | non   | := :=++ :=-- :=foo
_______________________________________________
muldis-db-users mailing list
muldis-db-users@mm.darrenduncan.net
http://mm.darrenduncan.net/mailman/listinfo/muldis-db-users

Reply via email to