[mercury-users] Learning Mercury
Ralph Becket
rafe at csse.unimelb.edu.au
Mon Aug 13 14:30:33 AEST 2007
Tom Davies, Monday, 13 August 2007:
> Why does Mercury need the 'horizontal' predicate to generate the
> possible values for P2? Prolog (as I understand it) would carry
> uninstantiated values for P2 down its search tree until it can unify
> them.
Mercury doesn't support free variable aliasing the way Prolog does (at
least, it doesn't unless you use a solver type, which is getting into
more advanced territory). The reasons for this include:
- the substantial associated performance cost, which you pay regardless
of whether you use it or not (and very few programs actually use it);
- the difficulty of generating mode-specific code when non-ground values
are allowed;
- the difficulty in ensuring the soundness of code with non-ground
values (e.g., bad things can happen inside negations).
If you really have to use constrained values (e.g., supporting
equality/disequality constraints) you need to use solver types. I'm
only going to talk about them if you force me!
-- Ralph
--------------------------------------------------------------------------
mercury-users mailing list
Post messages to: mercury-users at csse.unimelb.edu.au
Administrative Queries: owner-mercury-users at csse.unimelb.edu.au
Subscriptions: mercury-users-request at csse.unimelb.edu.au
--------------------------------------------------------------------------
More information about the users
mailing list