[mercury-users] Records
Fergus Henderson
fjh at cs.mu.OZ.AU
Sat Nov 6 01:41:29 AEDT 1999
On 05-Nov-1999, Juergen Stuber <juergen at mpi-sb.mpg.de> wrote:
> Fergus Henderson <fjh at cs.mu.OZ.AU> writes:
> > We definitely want to allow explicit type qualifiers in clauses.
> > Currently the plan is for that to use the syntax `Expression : Type'.
> > (There's already code in the compiler to handle this, but it's not yet
> > enabled because `:' is currently used as module qualifier.)
> >
> > We probably also want to allow different clauses for different modes of
> > a predicate (perhaps with such predicates defaulting to `impure',
> > requiring an explicit `pragma promise_pure' if the different modes have
> > the same semantics); currently this is possible using the C interface,
> > but it would be nice to have a more direct syntax for that.
...
> > Now, if we combine both of those extensions, then you could write
> >
> > foo(X : t) :- ...
> >
> > and
> >
> > foo(X :: m) :- ...
> >
> > and they would mean quite different things.
> > You could even use them both in the same clause:
> >
> > foo(X : t :: m) :- ...
> >
> > If `::' is to be used for both type and mode qualifiers,
> > then that wouldn't work.
>
> That depends on whether you can distinguish types from modes
> or not. Currently you cannot, because they have their own
> namespaces and there is a fair amount of overloading.
Yes. I think that is unlikely to change.
Using the same name for a type and its corresponding
inst is common, and IMHO often improves readability.
> BTW, will you also support such declarations in goals, or
> only in heads as your example suggests?
Type qualifiers would definitely be allowed in goals.
Mode qualifiers would probably only be allowed in heads.
> > But in recent development versions, we allow
> >
> > Foo `qualifier__infix_op` Bar
> >
> > and hence
> >
> > Foo `'int__+'` Bar
> >
> > Or of course you can use prefix:
> >
> > 'int__+'(Foo, Bar)
>
> That will do nicely, thanks.
> I tried it with rotd-1999-09-17 where it didn't yet work.
The feature was added in July, so it should work fine
in rotd-1999-09-17. It seems to work fine according
to some simple tests I tried. If it doesn't, please
send us a bug report.
Cheers,
Fergus.
--
Fergus Henderson <fjh at cs.mu.oz.au> | "I have always known that the pursuit
WWW: <http://www.cs.mu.oz.au/~fjh> | of excellence is a lethal habit"
PGP: finger fjh at 128.250.37.3 | -- 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