[mercury-users] Feature request: State Variables + Data Terms
Fergus Henderson
fjh at cs.mu.OZ.AU
Fri Nov 7 07:21:51 AEDT 2003
On 05-Nov-2003, Simon Taylor <stayl at cs.mu.OZ.AU> wrote:
> On 04-Nov-2003, obo at ruk.cuni.cz <obo at ruk.cuni.cz> wrote:
> > I've fallen in love with the state variables syntax. But falling in love
> > with something also means that one often wishes to improve the object...
> >
> > Would it be hard to allow syntax like this:
> >
> > :- type my_data ---> data( foo::string, bar::int ).
> >
> > :- pred update(my_data::in, my_data::out) is det.
> >
> > update(!Data) :-
> > add_one_to_int(!Data^bar).
>
> That would need to be
> add_one_to_int(!(Data^bar)).
Uh, why?
I understand that !Data^bar will get parsed as (!Data)^bar.
But that would be OK. We could still define (!Data)^bar
to expand to the pair of arguments (!.Data)^bar and (!:Data)^bar,
and likewise for cases involving multiple levels of field
access, i.e. !Foo^f1^f2^...^fn.
Do you see any problems with that approach?
While we're at it, I would also like to see a nice syntax for
field updates that don't involve procedure calls, e.g.
by giving the obvious semantics to the syntax
!Data^bar := ...
That is, this syntax would expand to
!:Data = (!.Data^bar := ...)
--
Fergus Henderson <fjh at cs.mu.oz.au> | "I have always known that the pursuit
The University of Melbourne | of excellence is a lethal habit"
WWW: <http://www.cs.mu.oz.au/~fjh> | -- the last words of T. S. Garp.
--------------------------------------------------------------------------
mercury-users mailing list
post: mercury-users at cs.mu.oz.au
administrative address: owner-mercury-users at cs.mu.oz.au
unsubscribe: Address: mercury-users-request at cs.mu.oz.au Message: unsubscribe
subscribe: Address: mercury-users-request at cs.mu.oz.au Message: subscribe
--------------------------------------------------------------------------
More information about the users
mailing list