[m-rev.] for review: state vars syntax sugar
Ben Schmidt
b.schmidt at ugrad.unimelb.edu.au
Thu Jan 25 13:26:13 AEDT 2007
> (3) For consistency in the concrete syntax, I think a state-variable
> mode pair should also be preceeded by !. That is, the following should
> be equivalent:
>
> :- pred foo(!bar::!(in, out)) is det.
>
> :- pred foo(!bar).
> :- mode foo(!(in, out)) is det.
>
> :- pred foo(bar, bar).
> :- mode foo(in, out) is det.
>
> The ! symbol immediately alerts the reader to the fact that state
> variables are being used. Just using a (_, _) pair for the modes
> omits this helpful visual clue.
There was lengthy discussion about this (thread: [m-dev.] syntactic
suggar suggestion for state variables). I think the consensus of the
list was *not* to use ! in the mode part of the declaration, but to have
the syntax as Ondrej implemented it. Reasoning:
- Using !(in,out) looks like it should expand to (in0,out0),(in,out),
i.e. four arguments, or two pairs, which it doesn't.
- If using ! as a functor for modes, it should take an inst argument if
anything, but what is wanting to be done isn't parameterisable in terms
of an inst argument (at least at present).
- The syntax as implemented by Ondrej is the one suggested in the
existing compiler code.
Others can confirm that this was the consensus, or reopen the
argument.... My vote is for the way Ondrej has done it.
Ben.
--------------------------------------------------------------------------
mercury-reviews mailing list
Post messages to: mercury-reviews at csse.unimelb.edu.au
Administrative Queries: owner-mercury-reviews at csse.unimelb.edu.au
Subscriptions: mercury-reviews-request at csse.unimelb.edu.au
--------------------------------------------------------------------------
More information about the reviews
mailing list