[mercury-users] boolean expressions from semidet predicates

Nicholas Nethercote njn at csse.unimelb.edu.au
Sat May 13 02:02:27 AEST 2006

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:

What does this table represent?  It has operators like '+', '++' and 'and', 
but then there are functions int.+/2 and string.++/2 and bool.and/2.  Is 
this table a relic from Mercury's 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