X-Comment1: #############################################################
X-Comment2: #     uk.ac.glasgow.cs has changed to uk.ac.glasgow.dcs     #
X-Comment3: #     If this address does not work please ask your mail    #
X-Comment4: #     administrator to update your NRS & mailer tables.     #
X-Comment5: #############################################################

For completeness, here are the changes which have been proposed for
patterns, plus all other infix operator changes needed for the new
two-superscript form.  The important ones are those Joe/Brian/Paul have
made to pat(6,l).  This disallows, e.g.

        n + 2 + 3

but still allows:

        _ + 1
        n + 100

The changes to "type"/"constr" make the precedence and associativity
of "->" explicit (right infix, lower precedence than any constructor).
Thanks to Kent Karlsson for these fixes.

Notation is as for expressions.

Kevin


---------------------  Patterns  -------------------------------


pat             ->      pat(0,n)
pat(i,n)        ->      [pat(i+1,n) conop(i,n)] pat(i+1,n)
                |       pat(i,l)
                |       pat(i,r)

pat(i,l)        ->      { pat(i,l) | pat(i+1,n) } conop (i,l) pat(i+1,n)
pat(6,l)        ->      - { integer | float }
                ->      { var | _ } + integer

pat(i,r)        ->      pat(i+1,n) conop(i,r) {pat(i,r) | pat(i+1,n)}

pat(10,a)       ->      con apat1 ... apatk
                |       apat


----------------------  Expressions  ---------------------------


aexp            ->      ...
                |       ( exp(i+1,n) op(i,a) )
                |       ( op(i,a)    exp(i+1,n) )


-----------------------  Function LHSs  ------------------------


funlhs          ->      afunlhs
                |       pat(i+1,n) varop(i,n) pat(i+1,n)
                |       pat(i,l)   varop(i,l) pat(i+1,n)
                |       pat(i+1,n) varop(i,r) pat(i,r)



--------------------------  Type Arrows  -----------------------


type            ->      type -> btype
                |       btype

btype           ->      tycon atype1 ... atypek
                |       atype

constr          ->      btype1 conop btype2


Reply via email to