[m-dev.] proposal: drop automatic initialisation of solver types

Julien Fischer juliensf at csse.unimelb.edu.au
Fri Oct 26 16:43:05 AEST 2007


There has been an on-and-off discussion about removing support for automatic
initialisation for solver types.

Automatic initialisation is problematic because:

* it prevents solver types from being properly polymorphic, e.g.
   you cannot have the type foo(bar) where:

 	:- solver type foo(T).
 	:- solver type bar.

* the introduction of calls to the initialisation predicates complicates
   mode analysis.  Also, the compiler doesn't do a very good job of
   introducing them anyway: the introduction of the calls can change det
   code into semidet code etc.

* we don't use automatic intialisation in practice anyway.  The solver
   types in G12 all require (or we recommend) using explicit
   initialisation predicates.

* mode error messages are often poor or misleading because of
   interactions between automatic initialisation and impure code.

In light of this, I propose that we drop support for automatic
initialisation.

Objections?

Julien.
--------------------------------------------------------------------------
mercury-developers mailing list
Post messages to:       mercury-developers at csse.unimelb.edu.au
Administrative Queries: owner-mercury-developers at csse.unimelb.edu.au
Subscriptions:          mercury-developers-request at csse.unimelb.edu.au
--------------------------------------------------------------------------



More information about the developers mailing list