[mercury-users] boolean expressions from semidet predicates

Mark Brown mark at cs.mu.OZ.AU
Mon May 15 09:49:08 AEST 2006

On 13-May-2006, Nicholas Nethercote <njn at csse.unimelb.edu.au> wrote:
> On Fri, 12 May 2006, Mark Brown wrote:
> >>>It's only concrete syntax.  `X and Y' means the same thing as `and(X, 
> >>>Y)'.
> >>
> >>Which and/2 is this?  The one from bool.m?
> >
> >It's just a name, like `write_int', `++' or `foo'.  The meaning will of
> >course depend on the context in which it is used, following the same
> >overloading resolution rules as any other name.
> >
> >>>As for what they "are": `/\' is ISO-Prolog and `and' is an NU-Prolog
> >>>extension.
> >>
> >>What are their types?
> >
> >The types, if they even have them, are determined from the context.  But
> >these names can also be defined as typeclass names or user defined insts,
> >for example, in which case the concept of type does not apply.  Again,
> >they are just like any other names -- the fact that these particular names
> >can be written in infix operator form is only concrete syntax, and is
> >entirely orthogonal to the type system.
> I'll try a different tack.  The following page of the Ref Manual lists 
> Mercury's built-in operators:
> http://www.cs.mu.oz.au/research/mercury/information/doc-latest/mercury_ref/Builtin-Operators.html#Builtin%20Operators
> What does this table represent?

It is part of the specification of Mercury's concrete syntax.

> It has operators like '+', '++' and 'and', 

Yes, that means you can write `X and Y' instead of `and(X, Y)', etc.  As
I mentioned earlier, this has no impact on the semantics: both mean the
same thing.  Once Mercury has parsed the program, it no longer knows or
cares whether infix notation was used.

> but then there are functions int.+/2 and string.++/2 and bool.and/2.

Yes.  Where is the problem?

> Is 
> this table a relic from Mercury's Prolog heritage?

Only in the sense that Mercury's syntax itself is a relic from its Prolog
heritage.  ;-)


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